Flutter表单构建插件simple_form_arm的使用
Flutter表单构建插件simple_form_arm的使用
安装
在您的 pubspec.yaml
文件中添加以下依赖:
dependencies:
simple_form_arm: ^0.0.1
一个全面的表单构建器,适用于所有需求。
此插件由 tanmoy27112000/SimpleFormBuilder 修改而来。
示例代码
以下是使用 simple_form_arm
插件的完整示例代码:
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:simple_form_arm/form_builder.dart';
import 'package:simple_form_arm/src/shared/questionsModel.dart';
import 'package:simple_form_arm/src/shared/finalAnswers.dart';
import 'package:simple_form_arm/src/shared/constant.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
List multipleSelected = [];
List checkListItems = [
{
"id": 0,
"value": false,
"title": "星期日",
},
{
"id": 1,
"value": false,
"title": "星期一",
},
{
"id": 2,
"value": false,
"title": "星期二",
},
{
"id": 3,
"value": false,
"title": "星期三",
},
{
"id": 4,
"value": false,
"title": "星期四",
},
{
"id": 5,
"value": false,
"title": "星期五",
},
{
"id": 6,
"value": false,
"title": "星期六",
},
];
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'FormBuilder 示例',
home: Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: SingleChildScrollView(
child: Column(
children: [
Column(
children: List.generate(
checkListItems.length,
(index) => CheckboxListTile(
controlAffinity: ListTileControlAffinity.leading,
contentPadding: EdgeInsets.zero,
dense: true,
title: Text(
checkListItems[index]["title"],
style: const TextStyle(
fontSize: 16.0,
color: Colors.black,
),
),
value: checkListItems[index]["value"],
onChanged: (value) {
// setState(() {
// checkListItems[index]["value"] = value;
// if (multipleSelected.contains(checkListItems[index])) {
// multipleSelected.remove(checkListItems[index]);
// } else {
// multipleSelected.add(checkListItems[index]);
// }
// });
},
),
),
),
FormBuilder(
initialData: sampleData,
title: "表单标题",
titleStyle: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30,
),
description: "描述",
widgetCrossAxisAlignment: CrossAxisAlignment.center,
index: 0,
showIndex: false,
descriptionTextDecoration: TextStyle(color: Colors.red),
submitButtonWidth: 1,
submitButtonDecoration: BoxDecoration(
color: Colors.blue,
),
showIcon: false,
onSubmit: (QuestionsModel? val) {
if (val == null) {
// question();
print("无数据");
} else {
submit(jsonEncode(val.questions));
}
},
),
],
),
),
),
);
}
Map<String, dynamic> coordinate = {
"省份": "Jawa Barat",
"区县": "Bekasi",
"街道": "Teluk",
"详细地址": "teluk",
"纬度": "78482738472",
"经度": "u2i3u4i2"
};
submit(dynamic answer) {
FinalCoordinate koordata = FinalCoordinate.fromJson((coordinate));
var list = jsonDecode(answer) as List;
List<FinalAnswers> answer2 =
list.map((i) => FinalAnswers.fromJson(i)).toList();
FinalAnswerModel questionsModel =
FinalAnswerModel(answers: answer2, coordinate: koordata);
print(questionsModel.toJson());
}
// question() {
// var json = jsonEncode(sampleData3);
// List<Question> question = Question.fromJson(sampleData3) as List;
// QuestionsModel questionsModel = QuestionsModel(questions: question);
// var dataq = questionsModel.toJson();
// // return dataq;
// dataSample4.addAll(dataq);
// // print(dataq);
// }
}
更多关于Flutter表单构建插件simple_form_arm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter表单构建插件simple_form_arm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 simple_form_arm
插件来构建 Flutter 表单的示例代码。simple_form_arm
是一个用于简化表单构建的 Flutter 插件,它提供了易于使用的 API 来创建复杂的表单。
首先,确保你已经在 pubspec.yaml
文件中添加了 simple_form_arm
依赖:
dependencies:
flutter:
sdk: flutter
simple_form_arm: ^最新版本号 # 请替换为实际的最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来是一个简单的 Flutter 应用示例,展示了如何使用 simple_form_arm
来创建一个表单:
import 'package:flutter/material.dart';
import 'package:simple_form_arm/simple_form_arm.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Simple Form ARM Example'),
),
body: SimpleFormArmExample(),
),
);
}
}
class SimpleFormArmExample extends StatefulWidget {
@override
_SimpleFormArmExampleState createState() => _SimpleFormArmExampleState();
}
class _SimpleFormArmExampleState extends State<SimpleFormArmExample> {
final formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextFormFieldArm(
labelText: '用户名',
validators: [Validators.required('用户名不能为空')],
),
SizedBox(height: 16.0),
TextFormFieldArm(
labelText: '邮箱',
keyboardType: TextInputType.emailAddress,
validators: [
Validators.required('邮箱不能为空'),
Validators.email('请输入有效的邮箱地址'),
],
),
SizedBox(height: 16.0),
PasswordFormFieldArm(
labelText: '密码',
validators: [Validators.required('密码不能为空')],
),
SizedBox(height: 16.0),
ElevatedButton(
onPressed: () {
if (formKey.currentState!.validate()) {
// 表单验证通过,可以在这里处理提交逻辑
print('表单数据验证通过');
}
},
child: Text('提交'),
),
],
),
),
);
}
}
解释
-
导入必要的包:
flutter/material.dart
:Flutter 的基础 UI 库。simple_form_arm/simple_form_arm.dart
:simple_form_arm
插件的库。
-
主应用:
MyApp
类是应用的主入口,它返回一个MaterialApp
,其中包含了一个Scaffold
,其主体是SimpleFormArmExample
组件。
-
表单组件:
SimpleFormArmExample
是一个StatefulWidget
,它维护了一个Form
的GlobalKey
,用于表单验证。Form
子组件中包含了多个表单字段,如TextFormFieldArm
和PasswordFormFieldArm
,这些都是simple_form_arm
插件提供的简化表单字段组件。- 每个字段都配置了标签文本和验证器。
-
提交按钮:
ElevatedButton
是一个按钮,点击时会调用formKey.currentState!.validate()
方法来验证表单字段。- 如果验证通过,你可以在
onPressed
回调中处理表单提交逻辑。
这个示例展示了如何使用 simple_form_arm
插件来简化 Flutter 表单的构建和验证过程。你可以根据需要进一步扩展和定制这个示例。