Flutter表单处理插件intelligentsia_forms的使用
Flutter表单处理插件intelligentsia_forms的使用
intelligentsia_forms
插件为 Flutter 提供了一套强大的工具来创建可定制的登录和注册表单。它包括用于各种表单字段(如电子邮件、姓名、密码、个人简介、国家、出生日期和性别)的组件。每个组件都支持广泛的自定义选项,包括颜色、字体、图标和布局样式,以提供用户专属体验。

关键特性
- 高度可定制的组件:创建用户友好的表单。
- 灵活的样式选项:适用于任何设计主题。
- 轻松处理用户输入数据:包括验证和数据处理。
- 预构建的标准表单字段组件:简化开发过程。
组件文档
SmartTextFormField
SmartTextFormField
是一个多功能文本字段组件,适用于电子邮件、密码、用户名和“个人简介”等字段。每种字段类型都有专门的设置以增强用户体验。
功能
-
表单类型特定定制
- 占位符文本、图标、验证和键盘类型根据选择的
formType
(如email
,password
,aboutMe
, 或userName
)进行调整。 - 表单特定设置,例如切换密码可见性。
- 占位符文本、图标、验证和键盘类型根据选择的
-
字段标签定制
- 可以自定义标签的颜色、字体大小和字体粗细。
-
提示文本样式
- 设置自定义提示文本颜色、字体大小和字体粗细。
-
图标选项
- 配置前缀和后缀图标,并支持轮廓图标。
- 控制图标颜色和大小以保持一致的设计。
-
边框样式
- 调整不同状态(启用、聚焦、错误)下的边框半径和颜色设置。
-
错误消息样式
- 自定义错误消息样式以便于清晰反馈给用户。
-
灵活的填充选项
- 分离内部和外部填充选项。
-
数据控制
- 支持自定义
TextEditingController
和onChanged
处理程序。 - 对于“个人简介”这样的字段,可以限制最大和最小行数。
- 支持自定义
-
全局样式
- 选项设置背景填充颜色和主色调。
-
密码切换
- 对于
password
字段,后缀图标可切换密码可见性。
- 对于
标准样式



CountrySelector
CountrySelector
组件允许用户选择国家,并显示所选国家的名称和国旗。
功能
-
国家选择回调
- 调用函数 (
onCountrySelected
) 并传递所选国家的名称、代码和国旗。
- 调用函数 (
-
可定制的字段标签
- 自定义字段上方显示的标签(文本颜色、字体大小和粗细)。
-
提示文本样式
- 调整提示文本的颜色、字体大小和粗细。
-
图标定制
- 配置前缀和后缀图标(例如国旗和信息图标)。
- 可以启用或禁用
info
后缀图标。
-
刷新栏通知
- 当点击信息图标时,可以选择显示可自定义内容、持续时间和位置的
Flushbar
消息。
- 当点击信息图标时,可以选择显示可自定义内容、持续时间和位置的
-
全局和边框样式
- 设置主色调、填充色、边框半径和边框样式。
-
填充控制
- 分离内部和外部填充选项。
-
国家显示
- 显示所选国家的名称和国旗在字段内,并对未选中和选中状态进行样式设置。
-
国家选择器集成
- 允许通过模态选择器浏览并选择国家。
标准样式



DateSelector
DateSelector
组件提供了一个日期选择器,用于选择和显示日期。
功能
-
日期选择回调
- 调用函数 (
selectedDate
) 并传递所选日期的年、月和日。
- 调用函数 (
-
字段标签定制
- 可调整标签颜色、字体大小和粗细。
-
提示文本样式
- 当没有选择日期时,自定义提示文本样式。
-
图标定制
- 配置前缀图标(日历图标),并设置颜色、大小和轮廓样式。
-
填充和边框样式
- 内部和外部填充选项,以及可定制的边框样式。
-
日期约束
- 最小和最大日期设置以限制选择范围。
-
选定日期显示
- 以格式化样式显示所选日期。
-
日期选择器集成
- 打开带有自定义主色调和填充色的日期选择器模态框。
标准样式


GenderSelector
GenderSelector
组件允许用户从可定制的选项中选择性别。
功能
-
性别选择回调
- 调用
onGenderSelected
函数并传递所选性别。
- 调用
-
可定制的字段标签
- 可调整标签颜色、字体大小和粗细。
-
灵活的性别选项
- 可定制性别选择列表(默认为
['Male', 'Female']
)。
- 可定制性别选择列表(默认为
-
选项文本样式
- 可定制字体大小,并根据选择状态动态改变颜色。
-
颜色和边框样式
- 可配置主色调、字体颜色、背景填充和边框半径。
-
交互式性别选择
- 性别选项作为交互按钮,选中选项有独特的样式。
SocialAuthButton
SocialAuthButton
组件提供了一个可定制的按钮用于社交媒体认证。它支持多种社交媒体提供商,包括 Google、Facebook、Apple、Twitter、Pinterest 和 LinkedIn,并允许选择轮廓或实心图标。
功能
-
社交媒体提供商支持
- 包括 Google、Facebook、Apple、Twitter、Pinterest 和 LinkedIn 的图标。
- 根据选择的提供商自动选择适当的图标。
-
轮廓或实心图标
- 通过设置
outlinedLogo
属性选择轮廓或实心图标风格。
- 通过设置
-
可定制的背景和填充
- 设置背景颜色和填充,适用于轮廓和实心图标风格。
-
可配置的按钮大小
- 可定制按钮的宽度和高度以适应设计需求。
-
边框半径和阴影
- 可定制按钮的边框半径,并添加阴影以增加深度。
-
点击回调
- 通过
onTap
回调轻松处理用户交互。
- 通过
标准样式

安装
在 pubspec.yaml
文件中添加 intelligentsia_forms
:
dependencies:
intelligentsia_forms: ^latest_version
注意事项
CountrySelector
组件使用 Flushbar
包来显示通知。确保在项目中添加 another_flushbar
依赖项。
dependencies:
flutter:
sdk: flutter
another_flushbar: ^1.10.0
country_picker: ^2.0.9
示例代码
import 'package:flutter/material.dart';
import 'package:intelligentsia_forms/intelligentsia_forms.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Intelligentsia Forms'),
backgroundColor: IntelligentsiaColors.bg,
),
backgroundColor: IntelligentsiaColors.bg,
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 20),
// 用户名字段
SmartTextFormField(
controller: TextEditingController(),
onChanged: (string) => print("string"),
formType: FormType.userName,
primaryColor: Colors.black87,
enabledBorderSide: const BorderSide(color: IntelligentsiaColors.transparent),
),
// 电子邮件字段
const SmartTextFormField(
formType: FormType.email,
),
// 密码字段
const SmartTextFormField(
formType: FormType.password,
primaryColor: Colors.black87, // 可选
enabledBorderSide: BorderSide(color: IntelligentsiaColors.transparent),
),
// 个人简介字段
const SmartTextFormField(formType: FormType.aboutMe),
// 国家选择器
CountrySelector(onCountrySelected: (countryName, countryCode, countryFlag) {
print("Country Name: $countryName, Country Code: $countryCode, Country Flag: $countryFlag");
}),
// 日期选择器
DateSelector(
selectedDate: (int year, int month, int day) {
print("Selected Date: Year: $year, Month: $month, Day: $day");
},
),
// 性别选择器
GenderSelector(onGenderSelected: (gender) {
print("Selected gender : $gender");
}),
// 社交媒体登录按钮
Padding(
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SocialAuthButton(provider: SocialAuthProvider.google, onTap: () {}),
SocialAuthButton(provider: SocialAuthProvider.facebook, onTap: () {}),
SocialAuthButton(provider: SocialAuthProvider.twitter, onTap: () {}),
SocialAuthButton(provider: SocialAuthProvider.pinterest, onTap: () {}),
SocialAuthButton(provider: SocialAuthProvider.apple, onTap: () {}),
SocialAuthButton(provider: SocialAuthProvider.linkedin, onTap: () {}),
],
),
),
// 轮廓样式社交媒体登录按钮
Padding(
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SocialAuthButton(provider: SocialAuthProvider.google, onTap: () {}, outlinedLogo: true),
SocialAuthButton(provider: SocialAuthProvider.facebook, onTap: () {}, outlinedLogo: true),
SocialAuthButton(provider: SocialAuthProvider.twitter, onTap: () {}, outlinedLogo: true),
SocialAuthButton(provider: SocialAuthProvider.pinterest, onTap: () {}, outlinedLogo: true),
SocialAuthButton(provider: SocialAuthProvider.apple, onTap: () {}, outlinedLogo: true),
SocialAuthButton(
provider: SocialAuthProvider.linkedin,
onTap: () {},
outlinedLogo: true,
),
],
),
),
],
),
),
),
);
}
}
更多关于Flutter表单处理插件intelligentsia_forms的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter表单处理插件intelligentsia_forms的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
intelligentsia_forms
是一个用于简化 Flutter 表单处理的插件。它提供了一种更简洁和高效的方式来处理表单验证、状态管理和数据提交。虽然它可能不是一个广泛使用的插件,但它的设计理念是简化开发者在处理表单时的复杂性。
以下是使用 intelligentsia_forms
的基本步骤和示例:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 intelligentsia_forms
插件的依赖。
dependencies:
flutter:
sdk: flutter
intelligentsia_forms: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 创建表单
接下来,你可以使用 intelligentsia_forms
来创建一个表单。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:intelligentsia_forms/intelligentsia_forms.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Intelligentsia Forms Example'),
),
body: MyForm(),
),
);
}
}
class MyForm extends StatelessWidget {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: 'Username'),
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter a username';
}
return null;
},
),
TextFormField(
decoration: InputDecoration(labelText: 'Password'),
obscureText: true,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter a password';
}
return null;
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
// 表单验证通过,处理提交逻辑
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Form Submitted Successfully')),
);
}
},
child: Text('Submit'),
),
],
),
),
);
}
}
3. 使用 intelligentsia_forms
的特性
intelligentsia_forms
提供了一些额外的功能来简化表单处理,例如:
- 自动验证:可以在用户输入时自动验证表单字段。
- 表单状态管理:可以方便地管理表单的状态,例如禁用/启用提交按钮。
- 数据绑定:可以将表单字段与数据模型绑定,简化数据提交和回填。
4. 处理表单提交
在表单提交时,你可以通过 FormState
来获取表单数据,并执行相应的操作。例如:
onPressed: () {
if (_formKey.currentState!.validate()) {
// 表单验证通过,处理提交逻辑
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Form Submitted Successfully')),
);
}
},