Flutter表单验证插件best_form_validator的使用

Flutter表单验证插件best_form_validator的使用

best_form_validator 是一个全面的 Flutter 包,旨在简化表单验证。它提供了各种表单字段(包括电子邮件、电话号码、密码、姓名和年龄)的健壮验证函数。该包支持根据不同国家的电话号码格式进行电话号码验证,使其适用于国际应用。

特性

  • 电子邮件验证:确保电子邮件地址符合正确的格式。
  • 电话号码验证:基于不同国家的格式验证电话号码。
  • 密码验证:灵活的密码验证,包括长度、数字、字母、特殊字符、小写和大写字母等标准。
  • 姓名验证:验证姓名以确保它们不包含特殊字符、数字或前导/尾随空格。
  • 年龄验证:从 DateTime 或字符串输入验证年龄,并设置可配置的最小年龄限制。

开始使用

安装

pubspec.yaml 文件中添加以下内容:

dependencies:
  best_form_validator: ^1.0.0

然后运行 flutter pub get 来安装该包。

使用方法

电子邮件验证

首先,导入 email_validator.dart

import 'package:best_form_validator/email_validator.dart';

然后,使用 EmailValidator.validate 方法来验证电子邮件:

String? emailError = EmailValidator.validate('example@domain.com');

电话号码验证

首先,导入 phone_validator.dart

import 'package:best_form_validator/phone_validator.dart';

加载电话正则表达式映射(应在应用程序初始化时完成),如果不调用此函数,则电话验证将无法工作:

await Validators.loadPhoneRegex();

创建 PhoneValidator 实例并验证电话号码:

PhoneValidator phoneValidator = PhoneValidator('US');
String? phoneError = phoneValidator.validate('+12345678901');

密码验证

首先,导入 password_validator.dart

import 'package:best_form_validator/password_validator.dart';

创建 PasswordValidator 实例并验证密码:

PasswordValidator passwordValidator = PasswordValidator(
  checkLength: true,
  checkNumberAndLetter: true,
  checkSpecialCharacter: true,
  checkLowerCase: true,
  checkUpperCase: true,
  minLength: 8,
);

String? passwordError = passwordValidator.validate('Password1!');

姓名验证

首先,导入 name_validator.dart

import 'package:best_form_validator/name_validator.dart';

验证姓名:

String? nameError = NameValidator.validate('John Doe');

完整示例

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

import 'package:flutter/material.dart';
import 'package:best_form_validator/best_form_validator.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 Validation Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: FormValidationExample(),
        ),
      ),
    );
  }
}

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

class _FormValidationExampleState extends State<FormValidationExample> {
  final _formKey = GlobalKey<FormState>();
  final TextEditingController _emailController = TextEditingController();
  final TextEditingController _passwordController = TextEditingController();
  final TextEditingController _nameController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        children: [
          TextFormField(
            controller: _emailController,
            decoration: InputDecoration(labelText: 'Email'),
            validator: (value) {
              return Validators.validateEmail(value!,
                  requiredError: "Email is required", invalidError: "Email is not valid");
            },
          ),
          TextFormField(
            controller: _passwordController,
            decoration: InputDecoration(labelText: 'Password'),
            obscureText: true,
            validator: (value) {
              return Validators.validatePassword(value!,
                  requiredError: "Password is required", invalidError: "Password is not valid");
            },
          ),
          TextFormField(
            controller: _nameController,
            decoration: InputDecoration(labelText: 'Name'),
            validator: (value) {
              return Validators.validateName(value!,
                  requiredError: "Name is required", invalidError: "Name is not valid");
            },
          ),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: () {
              if (_formKey.currentState!.validate()) {
                // 表单验证通过
                print('Form is valid');
              } else {
                // 表单验证失败
                print('Form is invalid');
              }
            },
            child: Text('Submit'),
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


best_form_validator 是一个用于 Flutter 的表单验证插件,它提供了简单且灵活的方式来验证表单字段。通过使用 best_form_validator,你可以轻松地为表单字段添加验证规则,并在用户输入不符合要求时显示错误信息。

安装 best_form_validator

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

dependencies:
  flutter:
    sdk: flutter
  best_form_validator: ^1.0.0  # 请确保使用最新版本

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

使用 best_form_validator

以下是一个简单的示例,展示了如何使用 best_form_validator 来验证表单字段。

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

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

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Form(
        key: _formKey,
        child: Column(
          children: <Widget>[
            TextFormField(
              controller: _emailController,
              decoration: InputDecoration(labelText: 'Email'),
              validator: BestFormValidator().email(),
            ),
            TextFormField(
              controller: _passwordController,
              decoration: InputDecoration(labelText: 'Password'),
              obscureText: true,
              validator: BestFormValidator().required(),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                if (_formKey.currentState!.validate()) {
                  // 表单验证通过,执行提交操作
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('Form Submitted Successfully')),
                  );
                }
              },
              child: Text('Submit'),
            ),
          ],
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _emailController.dispose();
    _passwordController.dispose();
    super.dispose();
  }
}
回到顶部