Flutter表单验证插件custom_form_validation的使用

Flutter表单验证插件custom_form_validation的使用

custom_form_validation 是一个用于 Flutter 项目的可自定义验证类。它提供了灵活的表单验证功能,简化了在 Flutter 应用程序中创建和定制验证的过程。


平台支持

平台 支持状态
Android
iOS
Web

安装

要将 custom_form_validation 添加到您的 Flutter 项目中,请按照以下步骤操作:

  1. 在项目的 pubspec.yaml 文件中添加依赖项并运行 flutter pub get

    dependencies:
      custom_form_validation: ^0.0.4
    
  2. 在 Dart 文件中导入包:

    import 'package:custom_form_validation/custom_validation.dart';
    

使用

通过使用 CustomTextFormFieldValidations 类,您可以轻松创建带有验证功能的文本输入框。以下是一个示例代码:

import 'package:custom_form_validation/custom_validation.dart';
TextFormField(
  validator: (value) => Validator.validateMobile(value),
),
TextFormField(
  validator: (value) => Validator.validateName(value),
),
TextFormField(
  validator: (value) => Validator.validateAddress(value),
),

更多示例可以查看 example 文件夹


自定义选项

custom_form_validation 提供了许多自定义选项,例如添加本地验证规则等,以满足应用程序的需求。


示例代码

以下是完整的示例代码,展示了如何使用 custom_form_validation 插件来实现表单验证:

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: const MyForm(),
    );
  }
}

class MyForm extends StatefulWidget {
  const MyForm({super.key});

  [@override](/user/override)
  State<MyForm> createState() => _MyFormState();
}

class _MyFormState extends State<MyForm> {
  final _formKey = GlobalKey<FormState>();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Form(
        key: _formKey,
        child: SizedBox(
          width: MediaQuery.of(context).size.width * 0.70,
          child: SingleChildScrollView(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Mobile Number"),
                  keyboardType: TextInputType.number,
                  validator: (value) => Validator.validateMobile(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Address"),
                  validator: (value) => Validator.validateAddress(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Pan Number"),
                  validator: (value) => Validator.validatePan(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Adhar Number"),
                  validator: (value) => Validator.validateAadhar(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Email"),
                  validator: (value) => Validator.validateEmail(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Credit Card"),
                  validator: (value) => Validator.validateCreditCard(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Url"),
                  validator: (value) => Validator.validateURL(value),
                ),
                const SizedBox(height: 40),
                TextFormField(
                  decoration: const InputDecoration(labelText: "Enter Password"),
                  validator: (value) => Validator.validatePassword(value),
                ),
                const SizedBox(height: 40),
                ElevatedButton(
                  onPressed: () {
                    if (_formKey.currentState!.validate()) {
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text("Validate")),
                      );
                    } else {
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text("Error")),
                      );
                    }
                  },
                  child: const Text("Validation"),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


custom_form_validation 是一个用于 Flutter 的表单验证插件,它可以帮助开发者更方便地实现表单验证逻辑。以下是如何使用 custom_form_validation 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  custom_form_validation: ^1.0.0  # 请使用最新版本

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

2. 导入插件

在你的 Dart 文件中导入 custom_form_validation 插件:

import 'package:custom_form_validation/custom_form_validation.dart';

3. 创建表单

接下来,你可以创建一个表单,并使用 CustomFormValidation 来进行验证。以下是一个简单的示例:

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

class MyForm extends StatefulWidget {
  @override
  _MyFormState createState() => _MyFormState();
}

class _MyFormState extends State<MyForm> {
  final _formKey = GlobalKey<FormState>();
  final _emailController = TextEditingController();
  final _passwordController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Form Validation Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              TextFormField(
                controller: _emailController,
                decoration: InputDecoration(labelText: 'Email'),
                validator: (value) {
                  return CustomFormValidation.validateEmail(value);
                },
              ),
              SizedBox(height: 16.0),
              TextFormField(
                controller: _passwordController,
                decoration: InputDecoration(labelText: 'Password'),
                obscureText: true,
                validator: (value) {
                  return CustomFormValidation.validatePassword(value);
                },
              ),
              SizedBox(height: 24.0),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    // 表单验证通过,执行提交操作
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text('Form Submitted Successfully')),
                    );
                  }
                },
                child: Text('Submit'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    _emailController.dispose();
    _passwordController.dispose();
    super.dispose();
  }
}

4. 使用验证方法

CustomFormValidation 提供了一些常用的验证方法,例如:

  • validateEmail(String? value): 验证电子邮件地址。
  • validatePassword(String? value): 验证密码(通常要求至少6个字符)。
  • validateNotEmpty(String? value): 验证字段是否为空。

你可以根据需要在 validator 中使用这些方法。

5. 运行应用

现在你可以运行你的 Flutter 应用,并测试表单验证功能。如果输入不符合要求,表单会显示相应的错误信息。

6. 自定义验证规则

如果你需要自定义验证规则,可以直接在 validator 中编写自己的逻辑,或者扩展 CustomFormValidation 类来添加新的验证方法。

validator: (value) {
  if (value == null || value.isEmpty) {
    return 'This field is required';
  }
  if (value.length < 8) {
    return 'Password must be at least 8 characters long';
  }
  return null;
}
回到顶部