Flutter动态表单构建插件oss4bw_dynamic_form的使用
Flutter动态表单构建插件oss4bw_dynamic_form的使用
一个简单的具有动态内容的StatefulWidget表单。
功能特性
- 支持TextField、TextArea、OptionPicker(多选/单选、下拉或单选按钮)
开始使用
- 这个库还处于早期状态,因此未来版本可能会有重大更改。
使用方法
1. 首先创建一个继承自DynamicFormController
的控制器,并在构造函数中设计表单
class NewProjectDFController extends DynamicFormController {
NewProjectDFController() {
// 设计表单
formCreation = DynamicFormCreation(fields: [
DynamicFormField(id: 'name',
name: '项目名称',
fieldType: DynamicFormFieldTypes.TextField),
DynamicFormField(id: 'desc',
name: '项目描述',
fieldType: DynamicFormFieldTypes.TextArea),
DynamicFormField.createDropdownSelect('category', '类别', items: [
'应用构建器',
'故事构建器',
'课程构建器',
'营销活动构建器'
])
]);
}
}
2. 然后声明一个控制器实例并在initState()
中绑定状态
// 声明控制器
NewProjectDFController newProjectFormController = NewProjectDFController();
// 绑定状态
@override
void initState() {
super.initState();
newProjectFormController.bindState(reloadForm: () => setState(() {}));
}
3. 在build()
方法中将其用作对话框内容或其他小部件
showAddNewProjectDialog() {
showDialog(context: context, builder: (_) => AlertDialog(
title: Text("创建新项目"),
content: newProjectFormController.buildForm(context),
actions: [
ElevatedButton(
onPressed: () {
bool isValid = newProjectFormController.validateFields();
if (isValid) {
Navigator.pop(context);
var model = newProjectFormController.formValues;
debugPrint("新项目模型:");
debugPrint(jsonEncode(model));
}
},
child: Text("创建")
)
],
));
}
更多关于Flutter动态表单构建插件oss4bw_dynamic_form的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter动态表单构建插件oss4bw_dynamic_form的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
oss4bw_dynamic_form
是一个用于在 Flutter 应用中构建动态表单的插件。它允许开发者通过 JSON 配置文件来定义表单字段,从而动态生成表单界面。这个插件非常适合需要动态生成表单的场景,比如调查问卷、数据录入等。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 oss4bw_dynamic_form
插件的依赖:
dependencies:
flutter:
sdk: flutter
oss4bw_dynamic_form: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
使用插件
1. 定义表单配置
你可以通过 JSON 文件来定义表单的字段和布局。以下是一个简单的 JSON 配置示例:
{
"fields": [
{
"type": "text",
"label": "姓名",
"key": "name",
"placeholder": "请输入您的姓名",
"required": true
},
{
"type": "email",
"label": "邮箱",
"key": "email",
"placeholder": "请输入您的邮箱",
"required": true
},
{
"type": "password",
"label": "密码",
"key": "password",
"placeholder": "请输入您的密码",
"required": true
},
{
"type": "date",
"label": "出生日期",
"key": "birthdate",
"required": true
},
{
"type": "dropdown",
"label": "性别",
"key": "gender",
"options": [
{"label": "男", "value": "male"},
{"label": "女", "value": "female"}
],
"required": true
}
]
}
2. 加载表单配置并生成表单
在 Flutter 应用中,你可以通过以下步骤来加载 JSON 配置并生成表单:
import 'package:flutter/material.dart';
import 'package:oss4bw_dynamic_form/oss4bw_dynamic_form.dart';
class DynamicFormPage extends StatefulWidget {
[@override](/user/override)
_DynamicFormPageState createState() => _DynamicFormPageState();
}
class _DynamicFormPageState extends State<DynamicFormPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
Map<String, dynamic> _formData = {};
void _onSubmit() {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
// 处理表单数据
print(_formData);
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('动态表单'),
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: DynamicForm(
formConfig: '''
{
"fields": [
{
"type": "text",
"label": "姓名",
"key": "name",
"placeholder": "请输入您的姓名",
"required": true
},
{
"type": "email",
"label": "邮箱",
"key": "email",
"placeholder": "请输入您的邮箱",
"required": true
},
{
"type": "password",
"label": "密码",
"key": "password",
"placeholder": "请输入您的密码",
"required": true
},
{
"type": "date",
"label": "出生日期",
"key": "birthdate",
"required": true
},
{
"type": "dropdown",
"label": "性别",
"key": "gender",
"options": [
{"label": "男", "value": "male"},
{"label": "女", "value": "female"}
],
"required": true
}
]
}
''',
onChanged: (Map<String, dynamic> data) {
setState(() {
_formData = data;
});
},
),
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _onSubmit,
child: Icon(Icons.save),
),
);
}
}