Flutter表单验证插件lite_validator的使用

Flutter表单验证插件lite_validator的使用

lite_validator 是一个轻量级且易于使用的字符串验证插件。它支持多种常见的验证模式,例如电子邮件地址验证等。

特点

  • 支持多种字符串验证模式
  • 提供简单的验证方法和错误消息处理

使用示例

下面是一个完整的示例,展示了如何在Flutter应用中使用 lite_validator 进行表单验证。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Lite Validator Example'),
        ),
        body: Center(
          child: MyForm(),
        ),
      ),
    );
  }
}

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

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

  void _submitForm() {
    if (_formKey.currentState.validate()) {
      _formKey.currentState.save();
      print("Email: $_email");
    } else {
      print("Validation failed!");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextFormField(
              decoration: InputDecoration(labelText: 'Email'),
              keyboardType: TextInputType.emailAddress,
              validator: (value) {
                final wrongEmailValid = LiteValidator.validator(
                  value: value,
                  pattern: LitePatterns.email,
                  errorMessage: "Invalid email address",
                );
                if (wrongEmailValid != null) {
                  return wrongEmailValid;
                }
                return null;
              },
              onSaved: (value) => _email = value,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _submitForm,
              child: Text('Submit'),
            )
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 导入必要的库:

    import 'package:flutter/material.dart';
    import 'package:lite_validator/lite_validator.dart';
    
  2. 创建主应用类 MyApp:

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Lite Validator Example'),
            ),
            body: Center(
              child: MyForm(),
            ),
          ),
        );
      }
    }
    
  3. 创建表单状态类 _MyFormState:

    class _MyFormState extends State<MyForm> {
      final _formKey = GlobalKey<FormState>();
      String _email;
    
      void _submitForm() {
        if (_formKey.currentState.validate()) {
          _formKey.currentState.save();
          print("Email: $_email");
        } else {
          print("Validation failed!");
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return Form(
          key: _formKey,
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                TextFormField(
                  decoration: InputDecoration(labelText: 'Email'),
                  keyboardType: TextInputType.emailAddress,
                  validator: (value) {
                    final wrongEmailValid = LiteValidator.validator(
                      value: value,
                      pattern: LitePatterns.email,
                      errorMessage: "Invalid email address",
                    );
                    if (wrongEmailValid != null) {
                      return wrongEmailValid;
                    }
                    return null;
                  },
                  onSaved: (value) => _email = value,
                ),
                SizedBox(height: 20),
                ElevatedButton(
                  onPressed: _submitForm,
                  child: Text('Submit'),
                )
              ],
            ),
          ),
        );
      }
    }
    

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

1 回复

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


当然,下面是一个关于如何使用Flutter表单验证插件lite_validator的代码示例。这个示例展示了如何使用lite_validator来进行基本的表单验证。

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

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

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

接下来,让我们创建一个简单的Flutter应用,使用lite_validator来进行表单验证。

1. 创建数据模型

首先,我们需要定义一个数据模型,并在模型中设置验证规则。

import 'package:lite_validator/lite_validator.dart';

class UserModel extends LiteValidatable {
  String? name;
  String? email;
  String? password;

  UserModel({this.name, this.email, this.password});

  @override
  void defineRules() {
    addRule('name', 'Name is required', (value) => value!.isNotEmpty);
    addRule('email', 'Email is required', (value) => value!.isNotEmpty);
    addRule('email', 'Invalid email address', (value) => RegExp(r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$").hasMatch(value!));
    addRule('password', 'Password is required', (value) => value!.isNotEmpty);
    addRule('password', 'Password must be at least 6 characters long', (value) => value!.length >= 6);
  }
}

2. 创建UI表单

接下来,我们创建一个简单的UI表单来收集用户输入,并使用lite_validator进行验证。

import 'package:flutter/material.dart';
import 'package:lite_validator/lite_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('Flutter Form Validation with lite_validator'),
        ),
        body: MyForm(),
      ),
    );
  }
}

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

class _MyFormState extends State<MyForm> {
  final UserModel user = UserModel();
  final formKey = GlobalKey<FormState>();

  void _submitForm() {
    if (formKey.currentState!.validate()) {
      if (user.validate()) {
        // 如果所有验证都通过,这里可以处理表单提交
        print('Form submitted successfully!');
        print('Name: ${user.name}');
        print('Email: ${user.email}');
        print('Password: ${user.password}');
      } else {
        // 使用lite_validator的验证结果提示用户
        user.errors.forEach((key, value) {
          ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("$key: $value")));
        });
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Form(
      key: formKey,
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextFormField(
              decoration: InputDecoration(labelText: 'Name'),
              validator: (value) {
                // 这里使用Flutter内置的验证器进行初步验证
                if (value == null || value.isEmpty) {
                  return 'Name is required';
                }
                return null;
              },
              onSaved: (value) => user.name = value,
            ),
            TextFormField(
              decoration: InputDecoration(labelText: 'Email'),
              validator: (value) {
                // 这里使用Flutter内置的验证器进行初步验证
                if (value == null || value.isEmpty) {
                  return 'Email is required';
                } else if (!RegExp(r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$").hasMatch(value!)) {
                  return 'Invalid email address';
                }
                return null;
              },
              onSaved: (value) => user.email = value,
            ),
            TextFormField(
              decoration: InputDecoration(labelText: 'Password'),
              validator: (value) {
                // 这里使用Flutter内置的验证器进行初步验证
                if (value == null || value.isEmpty) {
                  return 'Password is required';
                } else if (value!.length < 6) {
                  return 'Password must be at least 6 characters long';
                }
                return null;
              },
              obscureText: true,
              onSaved: (value) => user.password = value,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _submitForm,
              child: Text('Submit'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 运行应用

现在,你可以运行你的Flutter应用,并尝试填写表单。你会发现,表单字段将首先通过Flutter内置的验证器进行初步验证,然后在提交表单时通过lite_validator进行更详细的验证。

这个示例展示了如何使用lite_validator来增强Flutter应用的表单验证功能。你可以根据实际需要扩展和自定义验证规则。

回到顶部