Flutter表单构建插件form_builder的使用

Flutter表单构建插件form_builder的使用

form_builder 是一个非常强大的 Flutter 表单构建插件。它可以简化表单的创建和管理过程,并提供了丰富的功能来处理表单数据验证和用户输入。

安装

首先,在你的 pubspec.yaml 文件中添加 form_builder 依赖:

dependencies:
  flutter:
    sdk: flutter
  form_builder_validators: ^4.0.0 # 引入表单验证器
  form_builder: ^8.0.0   # 引入form_builder插件

然后运行 flutter pub get 来安装依赖。

基本用法

以下是一个简单的示例,展示如何使用 form_builder 创建一个包含用户名和密码的登录表单:

import 'package:flutter/material.dart';
import 'package:form_builder_validators/form_builder_validators.dart';
import 'package:form_builder/form_builder.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Form Builder 示例')),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: FormBuilder(
            key: _formKey,
            child: Column(
              children: [
                // 用户名字段
                FormBuilderTextField(
                  name: 'username',
                  decoration: InputDecoration(labelText: '用户名'),
                  validator: FormBuilderValidators.compose([
                    FormBuilderValidators.required(),
                    FormBuilderValidators.minLength(6),
                  ]),
                ),
                // 密码字段
                FormBuilderTextField(
                  name: 'password',
                  decoration: InputDecoration(labelText: '密码'),
                  obscureText: true,
                  validator: FormBuilderValidators.compose([
                    FormBuilderValidators.required(),
                    FormBuilderValidators.minLength(8),
                  ]),
                ),
                // 提交按钮
                ElevatedButton(
                  onPressed: () {
                    if (_formKey.currentState?.saveAndValidate() ?? false) {
                      print(_formKey.currentState?.value);
                    } else {
                      print("验证失败");
                    }
                  },
                  child: Text('提交'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  final GlobalKey<FormBuilderState> _formKey = GlobalKey<FormBuilderState>();
}

更多关于Flutter表单构建插件form_builder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter表单构建插件form_builder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,form_builder 是一个非常强大的 Flutter 插件,用于快速构建复杂的表单。下面是一个基本的示例,展示了如何使用 form_builder 来构建一个表单,并处理表单的提交。

首先,确保在你的 pubspec.yaml 文件中添加 form_builder 及其依赖项:

dependencies:
  flutter:
    sdk: flutter
  form_builder: ^6.0.0  # 请注意版本号,使用最新的稳定版本
  flutter_localizations:
    sdk: flutter  # 如果需要本地化支持

然后,运行 flutter pub get 来获取这些依赖项。

接下来,编写你的 Flutter 应用代码。下面是一个完整的示例,包括一个基本的表单构建和提交处理:

import 'package:flutter/material.dart';
import 'package:form_builder/form_builder.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Form Builder Example',
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale('en', 'US'), // 英文
        // 添加其他支持的语言
      ],
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<FormBuilderState> _fbKey = GlobalKey<FormBuilderState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Form Builder Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            FormBuilder(
              key: _fbKey,
              initialValue: {
                'name': '',
                'email': '',
                'age': '',
              },
              child: Column(
                children: <Widget>[
                  FormBuilderTextField(
                    name: 'name',
                    decoration: InputDecoration(labelText: 'Name'),
                    validators: [
                      FormBuilderValidators.required(errorText: 'Name is required'),
                    ],
                  ),
                  FormBuilderTextField(
                    name: 'email',
                    decoration: InputDecoration(labelText: 'Email'),
                    keyboardType: TextInputType.emailAddress,
                    validators: [
                      FormBuilderValidators.required(errorText: 'Email is required'),
                      FormBuilderValidators.email(errorText: 'Email is invalid'),
                    ],
                  ),
                  FormBuilderDropdown(
                    name: 'age',
                    decoration: InputDecoration(labelText: 'Age'),
                    options: ['18', '19', '20', '21'].map((value) => FormBuilderFieldOption(value: value)).toList(),
                    validators: [
                      FormBuilderValidators.required(errorText: 'Age is required'),
                    ],
                  ),
                ],
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                if (_fbKey.currentState!.validate()) {
                  var formValues = _fbKey.currentState!.fields.values
                      .where((element) => element.value != null)
                      .map((e) => MapEntry(e.name, e.value))
                      .toMap();
                  print('Form Submitted: $formValues');
                  // 你可以在这里处理表单提交,例如发送到服务器
                }
              },
              child: Text('Submit'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个 MyApp 小部件作为应用的根。
  2. MyHomePage 是包含表单的主页面。
  3. 我们使用 FormBuilder 小部件来构建表单。表单包含三个字段:名称(文本字段)、电子邮件(文本字段)和年龄(下拉菜单)。
  4. 每个字段都配置了验证器,以确保用户输入有效的数据。
  5. 一个按钮用于提交表单。在按钮的 onPressed 回调中,我们验证表单并打印表单值。

这个示例展示了如何使用 form_builder 插件来快速构建和验证表单。你可以根据需要添加更多字段和验证规则,以构建更复杂的表单。

回到顶部