Flutter表单构建插件form_builder_cupertino_fields的使用

Flutter表单构建插件form_builder_cupertino_fields的使用

form_builder_cupertino_fields 是一个为 flutter_form_builder 包提供额外的Cupertino风格输入字段的插件。本文将介绍如何使用这个插件来创建带有Cupertino样式的表单。

特性

  • 使用 FormBuilderField 逻辑实现Cupertino风格的字段。
  • 仅依赖于Cupertino组件,不包含Material组件的导入。

支持的输入字段

目前支持的字段包括:

  • FormBuilderCupertinoCheckbox - 单个复选框字段
  • FormBuilderCupertinoSegmentedControl - 使用 CupertinoSegmentedControl 的分段控制
  • FormBuilderCupertinoSlidingSegmentedControl - 使用 CupertinoSlidingSegmentedControl 的分段控制条
  • FormBuilderCupertinoSlider - 在滑块上选择数值
  • FormBuilderCupertinoSwitch - 开关字段
  • FormBuilderCupertinoTextField - 文本输入字段

使用方法

设置

无需特别设置,只需安装依赖并使用即可。

基本使用示例

以下是一个基本的使用示例,展示如何在Flutter应用中使用 form_builder_cupertino_fields 插件。

完整示例代码

import 'package:flutter/cupertino.dart';
import 'package:form_builder_cupertino_fields/form_builder_cupertino_fields.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return const CupertinoApp(
      title: 'Form Builder Cupertino Fields',
      theme: CupertinoThemeData(brightness: Brightness.light),
      home: MyHomePage(title: 'Form Builder Cupertino Fields'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

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

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      child: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(24),
          child: FormBuilder(
            key: _formKey,
            child: Column(
              children: [
                FormBuilderCupertinoCheckbox(
                  name: 'checkbox',
                  prefix: const Text('Select/Unselect'),
                ),
                const SizedBox(height: 16),
                FormBuilderCupertinoSegmentedControl<int>(
                  name: 'segmented_control',
                  shouldExpandedField: true,
                  autovalidateMode: AutovalidateMode.always,
                  options: const [
                    FormBuilderFieldOption(value: 1, child: Text('First')),
                    FormBuilderFieldOption(value: 2, child: Text('Second')),
                    FormBuilderFieldOption(value: 3, child: Text('Third')),
                  ],
                  prefix: const Icon(CupertinoIcons.add),
                  validator: (value) => value != null ? null : 'Required field',
                ),
                const SizedBox(height: 16),
                FormBuilderCupertinoSlidingSegmentedControl<String>(
                  name: 'segmented_sliding_control',
                  options: const [
                    FormBuilderFieldOption(value: '1', child: Text('1')),
                    FormBuilderFieldOption(value: '2', child: Text('2')),
                    FormBuilderFieldOption(value: '3', child: Text('3')),
                  ],
                  helper: const Text('Select the numbers'),
                  prefix: const Icon(CupertinoIcons.number),
                ),
                const SizedBox(height: 16),
                FormBuilderCupertinoSwitch(
                  name: 'switch',
                  initialValue: true,
                  prefix: const Text('Enable/Disabled'),
                ),
                const SizedBox(height: 16),
                FormBuilderCupertinoSlider(
                  name: 'slider',
                  initialValue: 10,
                  autovalidateMode: AutovalidateMode.onUserInteraction,
                  min: 1,
                  max: 100,
                  validator: (value) => value != null && value < 50 && value > 5
                      ? null
                      : 'Required value between 5 and 50',
                ),
                const SizedBox(height: 16),
                FormBuilderCupertinoTextField(
                  name: 'text',
                  decoration: BoxDecoration(
                    border: Border.all(
                      color: CupertinoColors.black,
                    ),
                    borderRadius: BorderRadius.circular(8),
                  ),
                  autovalidateMode: AutovalidateMode.onUserInteraction,
                  validator: (value) =>
                      value != null && value.length > 4 ? null : 'Write a text',
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

以上代码展示了如何在Flutter应用中使用 form_builder_cupertino_fields 插件创建一个带有多种Cupertino风格输入字段的表单。通过这种方式,您可以轻松地在iOS风格的应用中集成这些表单元素。

更多详细信息和示例代码可以查看 pub.devGitHub 上的示例项目。


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用form_builder_cupertino_fields插件来构建表单的示例代码。这个插件提供了基于Cupertino风格的表单字段,适合用于需要iOS风格的表单界面的应用。

首先,确保你的pubspec.yaml文件中已经添加了form_builder_cupertino_fields依赖:

dependencies:
  flutter:
    sdk: flutter
  form_builder_cupertino_fields: ^最新版本号  # 请替换为实际可用的最新版本号

然后,你可以在你的Flutter应用中按照以下步骤使用它:

1. 导入必要的包

import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:form_builder_cupertino_fields/form_builder_cupertino_fields.dart';

2. 创建一个表单字段列表

在这个例子中,我们将创建一个包含文本字段、数字字段和开关字段的表单。

final List<FormField> formFields = [
  FormBuilderTextField({
    "name": "name",
    "label": "Name",
    "validators": [FormBuilderValidators.required()],
    "decoration": InputDecoration(
      border: OutlineInputBorder(),
    ),
  }),
  FormBuilderCupertinoTextField({
    "name": "email",
    "label": "Email",
    "keyboardType": TextInputType.emailAddress,
    "validators": [FormBuilderValidators.required(), FormBuilderValidators.email()],
    "decoration": InputDecoration(
      border: OutlineInputBorder(),
    ),
  }),
  FormBuilderCupertinoNumberPicker({
    "name": "age",
    "label": "Age",
    "validators": [FormBuilderValidators.required()],
    "min": 0,
    "max": 100,
    "initialValue": 18,
    "decoration": InputDecoration(
      border: OutlineInputBorder(),
    ),
  }),
  FormBuilderCupertinoSwitch({
    "name": "subscribe",
    "label": "Subscribe to newsletter",
    "initialValue": false,
    "decoration": InputDecoration(
      border: OutlineInputBorder(),
    ),
  }),
];

3. 构建表单

接下来,在你的UI中使用FormBuilder组件来构建表单。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Form Builder Cupertino Fields Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: FormBuilder(
            initialValues: {
              "name": "",
              "email": "",
              "age": 18,
              "subscribe": false,
            },
            fields: formFields,
            onSubmit: (Map<String, dynamic> values) {
              // 处理表单提交
              print(values);
            },
          ),
        ),
      ),
    );
  }
}

4. 运行你的应用

确保你的开发环境已经设置好,然后运行你的Flutter应用。你应该会看到一个包含文本字段、电子邮件字段、年龄选择器(数字选择器)和订阅开关的表单。

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

回到顶部