Flutter表单字段插件my_formfield的使用
Flutter表单字段插件my_formfield的使用
本包提供了一个可定制且详细的TextFormField小部件,用于在Flutter中创建复杂的表单,并内置了验证和错误处理功能。
特性
- 可定制的输入装饰
- 内置验证和错误处理
安装
在你的pubspec.yaml
文件中添加以下依赖项:
dependencies:
my_formfield: ^latest_version
然后,在终端中运行flutter pub get
。
使用
要使用MyFormField
,首先导入该包并创建一个实例,指定所需的属性:
import 'package:my_formfield/my_formfield.dart';
// 创建一个带有标签的密码输入框
MyFormField(
isLabel: true,
inputLabel: 'Password',
label: 'Password',
inputHint: 'Enter password',
obscureText: true,
prefixIcon: const Icon(Icons.lock_outline),
suffixIcon: const Icon(Icons.visibility),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
),
示例代码
下面是一个完整的示例代码,展示了如何使用MyFormField
来创建一个包含全名、电子邮件和密码输入框的表单。
import 'package:flutter/material.dart';
import 'package:my_formfield/my_formfield.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
home: Example(),
);
}
}
class Example extends StatelessWidget {
const Example({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('My FormField'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
// 全名输入框
MyFormField(
isLabel: true,
label: 'Full name',
labelStyle: const TextStyle(fontWeight: FontWeight.w700),
inputHint: 'Enter full name',
prefixIcon: const Icon(Icons.person_outline),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
),
const SizedBox(height: 20),
// 邮箱输入框
MyFormField(
isLabel: true,
label: 'Email',
labelSpacing: 12,
inputHint: 'Enter email address',
prefixIcon: const Icon(Icons.alternate_email),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
),
const SizedBox(height: 20),
// 密码输入框
MyFormField(
inputLabel: 'Password',
label: 'Password',
inputHint: 'Enter password',
obscureText: true,
prefixIcon: const Icon(Icons.lock_outline),
suffixIcon: const Icon(Icons.visibility),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
),
const SizedBox(height: 40),
// 注册按钮
ElevatedButton(
onPressed: () {
// 执行操作
},
style: ElevatedButton.styleFrom(
minimumSize: const Size(double.infinity, 60),
backgroundColor: Colors.blueAccent,
foregroundColor: Colors.white,
shape: ContinuousRectangleBorder(
borderRadius: BorderRadius.circular(12),
)),
child: const Text('Sign Up'),
)
],
),
),
),
);
}
}
更多关于Flutter表单字段插件my_formfield的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter表单字段插件my_formfield的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
my_formfield
是一个自定义的 Flutter 表单字段插件,用于简化表单字段的创建和管理。以下是如何使用 my_formfield
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 my_formfield
插件的依赖:
dependencies:
flutter:
sdk: flutter
my_formfield: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 my_formfield
包:
import 'package:my_formfield/my_formfield.dart';
3. 使用 MyFormField
MyFormField
是一个自定义的表单字段组件,可以包含标签、输入框、验证逻辑等。以下是一个简单的使用示例:
import 'package:flutter/material.dart';
import 'package:my_formfield/my_formfield.dart';
class MyForm extends StatefulWidget {
[@override](/user/override)
_MyFormState createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final _formKey = GlobalKey<FormState>();
String _name = '';
String _email = '';
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Form'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: Column(
children: <Widget>[
MyFormField(
labelText: 'Name',
hintText: 'Enter your name',
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter your name';
}
return null;
},
onSaved: (value) {
_name = value!;
},
),
SizedBox(height: 20),
MyFormField(
labelText: 'Email',
hintText: 'Enter your email',
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter your email';
}
if (!RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(value)) {
return 'Please enter a valid email';
}
return null;
},
onSaved: (value) {
_email = value!;
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
// 处理表单数据
print('Name: $_name, Email: $_email');
}
},
child: Text('Submit'),
),
],
),
),
),
);
}
}
void main() {
runApp(MaterialApp(
home: MyForm(),
));
}