Flutter表单验证插件flutter_validators的使用

Flutter表单验证插件flutter_validators的使用

MIT License stars Pub

A dart package of String validators and sanitizers. Inspired by validator.js

安装

运行以下命令:

dart pub add flutter_validators

这将会在你的pubspec.yaml文件中添加如下一行(并运行隐式的dart pub get):

dependencies:
  flutter_validators: ^0.0.2

使用

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

import 'package:flutter_validators/flutter_validators.dart';

现在,你可以调用相应的验证方法。

var email = 'foo@bar.com';

print(isEmail(email)); // true

为了更简洁的代码,可以使用内置的String扩展方法:

print('foo@bar.com'.isEmail); // true

验证器

以下是当前可用的验证器列表:

验证器 描述
isBase32 检查字符串是否为base32编码
isBase58 检查字符串是否为base58编码
isBoolean 检查字符串是否为布尔值
isEmail 检查字符串是否为有效邮箱
equals 检查两个字符串是否相等

完整示例Demo

下面是一个完整的示例代码,演示如何使用flutter_validators插件进行表单验证:

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

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

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

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

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

  bool _isEmailValid(String value) {
    return isEmail(value);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Form(
        key: _formKey,
        child: Column(
          children: [
            TextFormField(
              controller: _emailController,
              decoration: InputDecoration(
                labelText: '电子邮件',
                border: OutlineInputBorder(),
              ),
              keyboardType: TextInputType.emailAddress,
              validator: (value) {
                if (value == null || value.isEmpty) {
                  return '请输入电子邮件地址';
                } else if (!_isEmailValid(value)) {
                  return '无效的电子邮件地址';
                }
                return null;
              },
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                if (_formKey.currentState!.validate()) {
                  print('表单验证通过');
                } else {
                  print('表单验证未通过');
                }
              },
              child: Text('提交'),
            ),
          ],
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _emailController.dispose();
    super.dispose();
  }
}

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

1 回复

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


当然,flutter_validators 是一个用于 Flutter 表单验证的流行插件。它提供了一系列便捷的验证器,可以帮助开发者快速实现表单验证逻辑。以下是一个使用 flutter_validators 插件的示例代码,展示了如何进行表单验证。

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

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

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

接下来是一个完整的 Flutter 应用示例,展示了如何使用 flutter_validators 进行表单验证:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Validators Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
  String _email = '';
  String _password = '';
  String _errorMessage = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Validators Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: <Widget>[
              TextFormField(
                decoration: InputDecoration(labelText: 'Email'),
                validator: (value) {
                  if (!EmailValidator().isValid(value)) {
                    return 'Please enter a valid email address';
                  }
                  return null;
                },
                onChanged: (value) {
                  setState(() {
                    _email = value;
                  });
                },
              ),
              TextFormField(
                decoration: InputDecoration(labelText: 'Password'),
                validator: (value) {
                  if (value.length < 6) {
                    return 'Password must be at least 6 characters long';
                  }
                  return null;
                },
                obscureText: true,
                onChanged: (value) {
                  setState(() {
                    _password = value;
                  });
                },
              ),
              SizedBox(height: 16),
              ElevatedButton(
                onPressed: () async {
                  if (_formKey.currentState!.validate()) {
                    // 如果验证通过,可以进一步处理表单数据
                    setState(() {
                      _errorMessage = '';
                    });
                    // 例如,打印表单数据
                    print('Email: $_email');
                    print('Password: $_password');
                  } else {
                    setState(() {
                      _errorMessage = 'Please correct the errors in the form';
                    });
                  }
                },
                child: Text('Submit'),
              ),
              SizedBox(height: 8),
              Text(
                _errorMessage,
                style: TextStyle(color: Colors.red),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个包含两个文本字段(Email 和 Password)的表单。我们使用 flutter_validators 提供的 EmailValidator 来验证 Email 字段,并手动验证 Password 字段的长度。表单的 validator 属性用于定义验证逻辑,如果验证失败,它会返回一个错误消息字符串;否则返回 null

当用户点击提交按钮时,调用 _formKey.currentState!.validate() 方法来验证整个表单。如果验证通过,可以进一步处理表单数据(例如,打印到控制台);如果验证失败,显示一个错误消息。

这个示例展示了 flutter_validators 的基本用法,你可以根据需要扩展和定制验证逻辑。

回到顶部