Flutter表单验证插件x_validation的使用

Flutter表单验证插件x_validation的使用

自定义小部件和组件,可以在您的项目中立即使用!

安装

pubspec.yaml文件中添加依赖项:

dependencies:
  x_validation: ^<latest_version>

如果您喜欢这个工具,请考虑捐赠以支持开发:

❤ 喜欢这个工具?捐款这里

想了解更多关于Flutter的知识?点击查看

联系我在LinkedIn上:

💥 通过LinkedIn与我联系

Bug/请求

如果您遇到任何问题,请随时打开一个issue。如果您认为库缺少功能,请在Github上提出建议,我会进行评估。 欢迎提交PR。

安装

pub 安装最新版本。

示例代码

以下是一个简单的示例,展示了如何在Flutter应用中使用x_validation插件进行表单验证。

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // 这个小部件是您的应用的根
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter ActiveLoader 示例',
      debugShowCheckedModeBanner: false,
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.red,
        title: const Text('验证'),
      ),
      body: SafeArea(
        child: Column(
          children: [
            TextFormField(
              autovalidateMode: AutovalidateMode.onUserInteraction,
              validator: (text) => FieldValidator(
                [
                  const RequiredFieldValidator(
                    errorMessage: "字段不能为空",
                  ),
                  const LengthFieldValidator(
                    minLength: 4,
                    errorMessage: "字段至少需要4个字符",
                  ),
                  const LengthFieldValidator(
                    maxLength: 12,
                    errorMessage: "字段最多可以有12个字符",
                  ),
                  const PatternFieldValidator(
                    r"(^[a-z])([a-z0-9-]*)([a-z0-9]$)",
                    errorMessage: "只能使用小写字母、连字符和数字",
                  ),
                  ConditionFieldValidator(
                    (field) => field == "type this",
                    errorMessage: "你必须输入'type this'",
                  ),
                ],
              ).validate(field: text),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


x_validation 是一个用于 Flutter 的表单验证插件,它简化了表单验证的过程,使开发者能够更轻松地实现复杂的表单验证逻辑。使用 x_validation,你可以定义验证规则、自定义错误消息,并在表单提交时进行验证。

以下是如何使用 x_validation 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  x_validation: ^1.0.0  # 请检查最新版本

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

2. 导入包

在你的 Dart 文件中导入 x_validation 包:

import 'package:x_validation/x_validation.dart';

3. 创建表单并定义验证规则

你可以使用 XValidation 来定义表单字段的验证规则。以下是一个简单的例子:

class MyForm extends StatefulWidget {
  [@override](/user/override)
  _MyFormState createState() => _MyFormState();
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        children: [
          TextFormField(
            controller: _emailController,
            decoration: InputDecoration(labelText: 'Email'),
            validator: XValidation().email().build(),
          ),
          TextFormField(
            controller: _passwordController,
            decoration: InputDecoration(labelText: 'Password'),
            obscureText: true,
            validator: XValidation().minLength(6).build(),
          ),
          ElevatedButton(
            onPressed: _submitForm,
            child: Text('Submit'),
          ),
        ],
      ),
    );
  }

  void _submitForm() {
    if (_formKey.currentState!.validate()) {
      // 表单验证通过,执行提交操作
      print('Form is valid');
    } else {
      // 表单验证失败
      print('Form is invalid');
    }
  }
}

4. 定义验证规则

XValidation 提供了多种内置的验证规则,例如:

  • required():字段不能为空。
  • email():验证电子邮件格式。
  • minLength(int length):字段的最小长度。
  • maxLength(int length):字段的最大长度。
  • match(String value):字段必须与指定的值匹配。
  • custom(ValidatorFunction validator):自定义验证规则。

你可以通过链式调用来组合多个验证规则:

validator: XValidation()
    .required()
    .email()
    .minLength(5)
    .maxLength(30)
    .build(),

5. 自定义错误消息

你可以为每个验证规则自定义错误消息:

validator: XValidation()
    .required('Email is required')
    .email('Invalid email format')
    .minLength(5, 'Email must be at least 5 characters')
    .build(),

6. 自定义验证规则

如果你需要自定义验证规则,可以使用 custom 方法:

validator: XValidation()
    .custom((value) {
      if (value!.contains('admin')) {
        return 'Username cannot contain "admin"';
      }
      return null;
    })
    .build(),

7. 表单提交

在表单提交时,调用 _formKey.currentState!.validate() 来触发验证。如果所有字段都通过验证,validate() 方法将返回 true,否则返回 false

void _submitForm() {
  if (_formKey.currentState!.validate()) {
    // 表单验证通过,执行提交操作
    print('Form is valid');
  } else {
    // 表单验证失败
    print('Form is invalid');
  }
}

8. 完整示例

以下是一个完整的示例,展示了如何使用 x_validation 进行表单验证:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('XValidation Example')),
        body: MyForm(),
      ),
    );
  }
}

class MyForm extends StatefulWidget {
  [@override](/user/override)
  _MyFormState createState() => _MyFormState();
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        children: [
          TextFormField(
            controller: _emailController,
            decoration: InputDecoration(labelText: 'Email'),
            validator: XValidation()
                .required('Email is required')
                .email('Invalid email format')
                .build(),
          ),
          TextFormField(
            controller: _passwordController,
            decoration: InputDecoration(labelText: 'Password'),
            obscureText: true,
            validator: XValidation()
                .required('Password is required')
                .minLength(6, 'Password must be at least 6 characters')
                .build(),
          ),
          ElevatedButton(
            onPressed: _submitForm,
            child: Text('Submit'),
          ),
        ],
      ),
    );
  }

  void _submitForm() {
    if (_formKey.currentState!.validate()) {
      // 表单验证通过,执行提交操作
      print('Form is valid');
    } else {
      // 表单验证失败
      print('Form is invalid');
    }
  }
}
回到顶部