Flutter验证插件validasi的功能使用
Flutter验证插件validasi的功能使用

一个灵活且简单的Dart验证库。
安装
在你的 pubspec.yaml
文件中添加 validasi
,然后运行 pub get
。
dependencies:
validasi: ^最新版本号
快速使用
要使用该库,只需导入包并使用 Validasi
类来访问可用的验证器。
import 'package:validasi/validasi.dart';
void main(List<String> args) {
var schema = Validasi.string().maxLength(255);
var result = schema.parse(args.firstOrNull);
print("Hello! ${result.value}");
}
支持的验证类型
- 字符串
- 数值
- 日期
- 列表
- 映射
- 泛型
特性
-
类型转换处理
使用Transformer
可以处理类型转换。Validasi 接受dynamic
输入,并允许你传递任何类型的数据。它将自动将数据转换为所需的类型。 -
安全验证
使用tryParse
或tryParseAsync
方法可以验证输入数据。它将返回一个包含验证结果的Result
对象,而不会抛出与规则失败相关的任何异常。 -
自定义规则
可以通过custom
和customFor
方法创建自己的自定义规则。 -
助手类
Validasi 还提供了一些助手类,帮助你组织和捕获验证结果,以便传递给 Flutter 的FormField
。
许可证
Validasi 库是根据 MIT 许可证 发布的。
贡献
你可以使用以下脚本来启动开发环境:
# 克隆仓库
git clone https://github.com/albetnov/validasi
# 安装依赖
dart pub get
测试文件位于 test/
目录下,它们与 lib
和 src
目录中的结构相似。
文档位于 docs/
目录下,你需要安装 Deno 2.0 来本地运行文档。可以使用以下命令:
deno i
deno run docs:dev
或者,你可以使用包管理器执行 vitepress
命令:
npx vitepress dev doc
bunx vitepress dev doc
pnpm dlx vitepress dev doc
完整示例
以下是一个完整的示例,展示了如何使用 validasi
插件进行验证。
import 'package:validasi/validasi.dart';
void main() {
// 简单的单个验证
var idSchema = Validasi.number();
try {
idSchema.parse(null); // 将抛出 FieldError 异常:字段不能为空
} catch (e) {
print(e);
}
// 允许空值跳过验证
// 如果给定值为空,则会跳过任何规则(除了自定义规则)
Validasi.number().nullable().parse(null); // 成功
// 自定义消息和字段名
var nameSchema = Validasi.string().minLength(1, message: '姓名必须填写!');
try {
nameSchema.parse(null, path: 'name'); // 将抛出 FieldError: 姓名必须填写
} catch (e) {
print(e);
}
// 对象模式验证
var payloadSchema = Validasi.object({
'name': Validasi.string().minLength(1).maxLength(200),
'address': Validasi.string().minLength(1).maxLength(255)
});
var payload = payloadSchema.parse({'name': 'Asep', 'address': 'Somewhere else...'});
print(payload.value); // 返回解析后的有效载荷(已转换)
// 数组验证
var arrSchema = Validasi.array(Validasi.string().minLength(1));
// 使用 `try` 前缀避免抛出任何异常
var arr = arrSchema.tryParse(['test']);
print(arr.value); // 返回有效载荷(已转换)
// 表单助手(用于 Flutter)
// 组合助手
var group = GroupValidator(
{'field1': Validasi.string(), 'field2': Validasi.number()});
try {
group.validate('field1', 10); // String?(field1 不是字符串)
} catch (e) {
print(e);
}
// 内联字段助手
FieldValidator(Validasi.string())
.validate(10); // String?(字段不是字符串)
}
更多关于Flutter验证插件validasi的功能使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter验证插件validasi的功能使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
validasi
是一个用于 Flutter 的表单验证插件,它可以帮助开发者轻松地对表单字段进行验证。虽然 Flutter 本身已经提供了 Form
和 TextFormField
等组件来进行表单验证,但 validasi
插件提供了一些额外的功能和便捷的验证规则,使得表单验证更加简单和高效。
安装 validasi
插件
首先,你需要在 pubspec.yaml
文件中添加 validasi
插件的依赖:
dependencies:
flutter:
sdk: flutter
validasi: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
使用 validasi
插件
1. 导入 validasi
插件
import 'package:validasi/validasi.dart';
2. 创建表单并应用验证规则
validasi
插件提供了一些内置的验证规则,例如 RequiredValidator
、EmailValidator
、MinLengthValidator
等。你可以将这些验证器应用到 TextFormField
或其他输入组件上。
import 'package:flutter/material.dart';
import 'package:validasi/validasi.dart';
class MyForm extends StatefulWidget {
@override
_MyFormState createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final _formKey = GlobalKey<FormState>();
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Validasi Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
controller: _emailController,
decoration: InputDecoration(labelText: 'Email'),
validator: Validasi.compose([
RequiredValidator(errorText: 'Email is required'),
EmailValidator(errorText: 'Invalid email address'),
]),
),
SizedBox(height: 16),
TextFormField(
controller: _passwordController,
decoration: InputDecoration(labelText: 'Password'),
obscureText: true,
validator: Validasi.compose([
RequiredValidator(errorText: 'Password is required'),
MinLengthValidator(6, errorText: 'Password must be at least 6 characters'),
]),
),
SizedBox(height: 24),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
// Form is valid, proceed with the action
print('Form is valid');
}
},
child: Text('Submit'),
),
],
),
),
),
);
}
}
3. 自定义验证规则
你也可以创建自定义的验证规则。只需继承 Validator
类并实现 validate
方法。
class CustomValidator extends Validator {
@override
String? validate(String? value) {
if (value == null || value.isEmpty) {
return 'This field is required';
}
if (value.length < 5) {
return 'Field must be at least 5 characters';
}
return null;
}
}
然后在表单中使用它:
TextFormField(
decoration: InputDecoration(labelText: 'Custom Field'),
validator: CustomValidator().validate,
),
4. 使用 Validasi.compose
Validasi.compose
方法允许你将多个验证器组合在一起。它会依次执行每个验证器,并在遇到第一个错误时返回错误信息。
validator: Validasi.compose([
RequiredValidator(errorText: 'This field is required'),
MinLengthValidator(5, errorText: 'Must be at least 5 characters'),
CustomValidator(),
]),