Flutter表单构建插件form_maker的使用

发布于 1周前 作者 phonegap100 来自 Flutter

Flutter表单构建插件form_maker的使用

Form Maker 是一个方便的工具,可以帮助开发者在他们的 Flutter 应用程序中轻松创建表单。通过这个插件,您可以轻松创建不同类型的形式字段,如文本字段、密码字段等。该插件旨在简化表单创建过程,通过提供用户友好的界面来轻松自定义每个表单字段的外观。

使用方法

要使用此插件,请在 pubspec.yaml 文件中将其作为依赖项添加。

dependencies:
  form_maker: latest_version

然后导入包:

import 'package:form_maker/form_maker.dart';

示例

以下是一个简单的示例,展示了如何在 Flutter 应用程序中使用 Form Maker 创建表单。

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

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('Form Maker'),
          actions: [
            IconButton(
              onPressed: () {},
              icon: const Icon(Icons.share),
            ),
            IconButton(
              onPressed: () {},
              icon: const Icon(Icons.favorite_border),
            ),
          ],
        ),
        body: Container(
          margin: const EdgeInsets.all(10),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ///
              /// Form Maker [FormElement.name] widget
              ///
              FormElement.name(
                onTap: () {
                  print('Name');
                },
              ),
              ///
              /// Form Maker [FormElement.email] widget
              ///
              FormElement.email(),
              FormElement.phone(),
              FormElement.address(),
            ],
          ),
        ));
  }
}

在这个示例中,我们创建了一个包含名字、电子邮件、电话和地址字段的表单。每个字段都可以通过不同的参数进行自定义。

如何使用

要更好地理解如何使用这个插件并轻松地在 Flutter 中创建注册表单,请参阅以下博客文章:在 Flutter 中使用 Form Maker 创建注册表单

参数

以下是 FormElement 类的一些常用参数:

参数名称 类型 描述
title String? 表单字段的标题
titleStyle TextStyle? 标题样式
prefix Widget? 表单字段的前缀小部件
suffix Widget? 表单字段的后缀小部件
textInputType TextInputType? 表单字段的输入类型
controller TextEditingController? 控制器
onChanged Function(String)? 字段值更改时的回调函数
label String? 字段标签
hint String? 字段提示
enable bool? 字段启用状态
disableTextFieldStyle TextStyle? 禁用状态下的字段样式
textFormFieldStyle TextStyle? 字段样式
obscureText bool? 字段是否为隐藏文本
onTap Function()? 字段被点击时的回调函数
maxLines int? 字段的最大行数

FormElement

以下是一些常见的 FormElement 方法及其参数:

FormElement.name(
    controller: TextEditingController(),
    onChanged: (value) {
      print(value);
    },
    onTap: () {
      print('Name');
    },
    enable: true,
),
FormElement 方法 描述 参数
.email() 电子邮件表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.verifyEmail() 验证电子邮件表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.password() 密码表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle, obscureText
.confirmPassword() 确认密码表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle, obscureText
.name() 名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.firstName() 姓氏表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.lastName() 名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.phone() 电话表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.fax() 传真表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.mobile() 手机号码表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.officeNumber() 办公室号码表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.address() 地址表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle, maxLines
.addressTwo() 额外地址字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle, maxLines
.city() 城市表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.state() 州/省表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.zip() 邮政编码表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.pincod() 邮编表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.country() 国家表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.age() 年龄表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.dob() 出生日期表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.motherName() 母亲姓名表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.motherFirstName() 母亲名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.motherLastName() 母亲姓氏表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.fatherName() 父亲姓名表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.fatherFirstName() 父亲名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.fatherLastName() 父亲姓氏表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.spouseName() 配偶姓名表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.spouseFirstName() 配偶名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.spouceLastName() 配偶姓氏表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.grandFatherName() 祖父姓名表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.grandFatherFirstName() 祖父名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.grandFatherLastName() 祖父姓氏表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.grandMotherName() 祖母姓名表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.grandMotherFirstName() 祖母名字表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.grandMotherLastName() 祖母姓氏表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.relation() 关系表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.website() 网站表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.companyName() 公司名称表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.companyAddress() 公司地址表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle, maxLines
.companyNumber() 公司号码表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.companyFax() 公司传真表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.companyEmail() 公司电子邮件表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.companyWebsite() 公司网站表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle
.custom() 自定义表单字段 controller, onChanged, enable, onTap, titleStyle, prefix, suffix, disableTextFieldStyle, textFormFieldStyle, label, hint, textInputType, title, maxLines, obscureText

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

1 回复

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


当然,form_maker 是一个用于 Flutter 的表单构建插件,它可以帮助开发者快速构建复杂的表单。以下是一个使用 form_maker 插件构建简单表单的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  form_maker: ^最新版本号  # 请替换为实际最新版本号

然后运行 flutter pub get 来获取依赖。

接下来是一个完整的 Flutter 应用示例,展示了如何使用 form_maker 来构建表单:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Form Maker Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  final formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Form Maker Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: formKey,
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              // 使用 FormMaker 提供的表单字段
              FormMakerTextField(
                label: 'Name',
                validators: [
                  Validators.required('Name is required'),
                ],
              ),
              SizedBox(height: 16),
              FormMakerEmailField(
                label: 'Email',
                validators: [
                  Validators.required('Email is required'),
                  Validators.email('Email is not valid'),
                ],
              ),
              SizedBox(height: 16),
              FormMakerPasswordField(
                label: 'Password',
                validators: [
                  Validators.required('Password is required'),
                  Validators.minLength(6, 'Password must be at least 6 characters long'),
                ],
              ),
              SizedBox(height: 16),
              FormMakerDropdownField(
                label: 'Gender',
                options: [
                  {'value': 'male', 'label': 'Male'},
                  {'value': 'female', 'label': 'Female'},
                ],
                validators: [
                  Validators.required('Gender is required'),
                ],
              ),
              SizedBox(height: 24),
              ElevatedButton(
                onPressed: () {
                  if (formKey.currentState!.validate()) {
                    // 提交表单数据
                    print('Form submitted');
                    // 你可以在这里添加处理表单提交的逻辑
                  }
                },
                child: Text('Submit'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们使用了 FormMakerTextFieldFormMakerEmailFieldFormMakerPasswordFieldFormMakerDropdownField 来构建表单字段。每个字段都配置了标签和验证器。Form 组件使用了 GlobalKey 来跟踪表单状态,并在点击提交按钮时验证表单。

请确保你已经正确安装了 form_maker 插件,并且已经替换了 ^最新版本号 为实际可用的版本号。

这个示例展示了基本的表单构建和验证功能,你可以根据需要进一步自定义和扩展表单字段和验证逻辑。

回到顶部