Flutter表单验证插件easy_breezy_validator的使用

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

Flutter表单验证插件easy_breezy_validator的使用

easy_breezy_validator 是一个简单的纯Dart文本验证库,用于验证您的需求。

特性

  • ⚡️ 纯Dart: 可以灵活构建,无需任何Flutter代码。
  • 🧷️ 文档齐全: 每个规则都有代码文档。

使用方法

示例1

/// true or false
var isEmailValid = isEmail("mohamedkx77@gmail.com");
var yourTextField =  TextFormField(
  validator:  isEmailValid ? null : "请填写有效的电子邮件地址",
);

在这个示例中,我们定义了一个名为 isEmailValid 的变量来检查输入的电子邮件地址是否有效。如果电子邮件地址无效,则在 TextFormFieldvalidator 属性中返回错误信息。

示例2

/// true or false
var isMyFullNameValid = isFullName("Muhammed Khaled");
String? gimmeMyNameOrNull(){
  if(isMyFullNameValid){
    return "Muhammed Khaled";
  }else{
    return null;
  }
}

在这个示例中,我们定义了一个名为 isMyFullNameValid 的变量来检查输入的全名是否有效。如果全名无效,则返回 null;否则返回全名字符串。

当前规则

以下是当前支持的一些验证规则:

var isEmailValid = isEmail("mohamedkx77@gmail.com");
var isFullNameValid = isFullName("Muhammed Khaled");
var isNameValid = isName("Muhammed");
var isDateOfBirthValid = isDateOfBirth("1999/01/11");
var isEgyptianPhoneValid = isDateOfBirth("01112345678");

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

1 回复

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


当然,下面是一个关于如何在Flutter中使用easy_breezy_validator插件进行表单验证的代码示例。这个插件可以帮助你简化表单验证的过程。

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

dependencies:
  flutter:
    sdk: flutter
  easy_breezy_validator: ^x.y.z  # 请替换为最新版本号

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

接下来,我们可以创建一个简单的表单,并使用easy_breezy_validator进行验证。

1. 创建数据模型

首先,我们需要定义一个数据模型,并使用@required@validate注解来指定哪些字段是必填的,以及如何验证这些字段。

import 'package:easy_breezy_validator/easy_breezy_validator.dart';

class UserModel {
  @required
  @validate(minLength: 3, maxLength: 15, message: "Name must be between 3 and 15 characters")
  String name = "";

  @required
  @validate(email: true, message: "Please enter a valid email address")
  String email = "";

  @required
  @validate(minLength: 6, message: "Password must be at least 6 characters long")
  String password = "";

  // Convert to a map for easy JSON serialization/deserialization
  Map<String, dynamic> toMap() {
    return {
      'name': name,
      'email': email,
      'password': password,
    };
  }
}

2. 创建表单UI

然后,我们创建一个简单的表单UI来收集用户输入。

import 'package:flutter/material.dart';
import 'package:easy_breezy_validator/easy_breezy_validator.dart';
import 'user_model.dart';  // 假设你将上面的模型保存在 user_model.dart 文件中

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

class MyApp extends StatelessWidget {
  @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: MyForm(),
        ),
      ),
    );
  }
}

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

class _MyFormState extends State<MyForm> {
  final _formKey = GlobalKey<FormState>();
  late UserModel user;
  late EasyBreezyValidator validator;

  @override
  void initState() {
    super.initState();
    user = UserModel();
    validator = EasyBreezyValidator(user);
  }

  void _submitForm() {
    if (_formKey.currentState!.validate()) {
      if (validator.validate()) {
        // If validation passes, you can submit the form
        print('Form Submitted');
        print(user.toMap());
      } else {
        // If validation fails, print the errors
        validator.errors.forEach((key, value) {
          print("${key.toString().split('.').last}: ${value.join(', ')}");
        });
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        children: [
          TextFormField(
            decoration: InputDecoration(labelText: 'Name'),
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Name is required';
              }
              // Since we're already validating with EasyBreezyValidator, we don't need to re-validate here
              return null;
            },
            onSaved: (value) {
              user.name = value!;
            },
          ),
          TextFormField(
            decoration: InputDecoration(labelText: 'Email'),
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Email is required';
              }
              // Since we're already validating with EasyBreezyValidator, we don't need to re-validate here
              return null;
            },
            onSaved: (value) {
              user.email = value!;
            },
          ),
          TextFormField(
            decoration: InputDecoration(labelText: 'Password'),
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Password is required';
              }
              // Since we're already validating with EasyBreezyValidator, we don't need to re-validate here
              return null;
            },
            obscureText: true,
            onSaved: (value) {
              user.password = value!;
            },
          ),
          ElevatedButton(
            onPressed: _submitForm,
            child: Text('Submit'),
          ),
        ],
      ),
    );
  }
}

3. 运行应用

将上述代码保存并运行你的Flutter应用。现在,你应该能够看到一个包含姓名、电子邮件和密码字段的表单。当你尝试提交表单时,easy_breezy_validator将自动验证这些字段,并在验证失败时显示相应的错误消息。

请注意,由于easy_breezy_validator已经处理了大部分验证逻辑,因此在TextFormFieldvalidator回调中,我们只需要检查字段是否为空(如果需要的话)。实际的验证逻辑是在validator.validate()方法中完成的。

回到顶部