Flutter表单验证插件all_validations_br的使用
Flutter表单验证插件all_validations_br的使用
项目描述 🚀
AllValidations BR 是一个轻量且高效的Flutter库,旨在加速数据验证和简化数据操作。结合多种功能,它非常适合提高应用程序开发的生产力。
功能 ⚙️
一般验证
- 类型和格式验证:
isNull
,isNum
,isNumericOnly
,isNumericFloat
isAlphabetOnly
,isLowercase
,isUppercase
isUUID
,isJSON
,isHexadecimal
isEmail
,isURL
特定验证
- 巴西特定验证:
isCpf
,isCnpj
,isRG
,isValidBRZip
isBrazilianCellPhone
,isBrazilianLandline
isLeapYear
,isValidBrazilianLicensePlate
- 验证PIX密钥:CPF、电子邮件、电话和随机密钥
文本处理
- 移除特殊字符:
removeCharacters
,removeNonNumeric
,removeAccents
- 数据格式化:
- CPF:
123.456.789-09
- CNPJ:
12.345.678/0001-95
- 手机号:
(11) 99999-9999
- 货币:
R$ 1.234,56
- 日期和时间:
01/01/2023
,12:30:45
- CPF:
- 其他操作:
- 比较句子:
isPhraseEqual
- 首字母大写:
capitalizeWords
- 比较句子:
日期工具
- 时间转换:
- UTC转本地:
convertUtcToLocal
- 本地转UTC:
convertLocalToUtc
- UTC转本地:
- 日期计算:
- 两个日期之间的天数:
daysBetween
- 两个日期之间的工作日:
businessDaysBetween
- 计算年龄:
calculateAge
- 两个日期之间的天数:
高级功能
- 正则表达式验证:
- 邮箱、URL、UUID、强密码
- 生成和操作:
- 生成随机字符串:
generateRandomString
- 生成随机数字:
generateRandomInt
- 货币格式化:
formatCurrency
- 移除HTML标签:
removeHtmlTags
- 生成随机字符串:
- 设备信息:
- 获取操作系统和Dart版本:
getDeviceInfo
- 获取操作系统和Dart版本:
- 加密
- 加密密码和验证:
encryptPassword
,validatePassword
- 加密密码和验证:
使用示例 🧪
参数验证
import 'package:all_validations_br/all_validations_br.dart';
class TestParameters extends ValidationNotifiable {
final String name;
final String email;
TestParameters({
required this.name,
required this.email,
}) {
addNotifications(Contract()
.hasMinLen(name, 2, 'TestParameters.Name', "Nome deve ter no mínimo 2 caracteres!")
.isEmail(email, "TestParameters.Email", "Email deve ser preenchido!"));
}
}
void main() {
final testParameters = TestParameters(email: "exemplo@teste.com", name: "c");
if (testParameters.isValid) {
print("Válido");
} else {
print("Inválido");
testParameters.notifications.forEach((f) => print(f.message));
}
}
CPF验证
var isCpf = AllValidations.isCpf("000.000.000-00");
// 返回 false
移除字符
var remover = AllValidations.removeCharacters("000.000.000-00");
// 返回: 00000000000
比较密码或句子
var comparacao = AllValidations.isPhraseEqual("123456789", "123456789");
// 返回: true
周日列表
var diasDaSemana = AllValidationsGetWeek.listDaysWeekAbvr;
// 返回: ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']
移除重音和特殊字符
var texto = AllValidations.removeAccents("áãé");
// 返回: aae
通过区号返回州
print(AllValidations.getStateByDDD("11"));
// 输出: BrazilianState.SP
验证JSON映射中的键
Map<String, dynamic> map1 = {"status": "success", "message": "successfully logged out"};
bool existe = AllValidations.isMapExists(map: map1, key: ['status']);
// 返回: true
完整示例
以下是一个完整的示例,展示了如何在Flutter应用中使用all_validations_br
进行CPF验证:
import 'package:all_validations_br/all_validations_br.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'验证结果: ',
),
Text(AllValidations.isCpf('00000000000') ? '无效' : '有效'),
Text(AllValidations.isCpf('728.551.470-50') ? '有效' : '无效'),
Text(AllValidations.isCpf('72855147050') ? '有效' : '无效'),
],
),
),
);
}
}
文档和Wiki 📖
更多关于库的使用细节,请访问我们的 Wiki。
安装 📦
在您的 pubspec.yaml
文件中添加依赖:
dependencies:
all_validations_br:
许可证 📜
本项目采用MIT许可证。
开发者 💻
由热爱Flutter开发的团队创建,旨在简化Flutter开发。
更多关于Flutter表单验证插件all_validations_br的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter表单验证插件all_validations_br的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用all_validations_br
插件进行表单验证的示例代码。这个插件主要用于巴西的特定验证规则,但也可以用于一般的表单验证。
首先,确保你已经在pubspec.yaml
文件中添加了all_validations_br
依赖:
dependencies:
flutter:
sdk: flutter
all_validations_br: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,创建一个简单的Flutter应用,展示如何使用all_validations_br
进行表单验证。
import 'package:flutter/material.dart';
import 'package:all_validations_br/all_validations_br.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _formKey = GlobalKey<FormState>();
String _name = '';
String _email = '';
String _cpf = '';
String _phone = '';
bool _autoValidate = false;
void _validateInputs() {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
print('Name: $_name');
print('Email: $_email');
print('CPF: $_cpf');
print('Phone: $_phone');
} else {
setState(() {
_autoValidate = true;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Form Validation Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
autovalidateMode: _autoValidate ? AutovalidateMode.always : AutovalidateMode.disabled,
child: Column(
children: [
TextFormField(
decoration: InputDecoration(labelText: 'Name'),
validator: (value) {
if (value == null || value.isEmpty) {
return 'Name is required';
}
return null;
},
onSaved: (value) {
_name = value!;
},
),
TextFormField(
decoration: InputDecoration(labelText: 'Email'),
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (!EmailValidator().isValid(value!)) {
return 'Invalid email';
}
return null;
},
onSaved: (value) {
_email = value!;
},
),
TextFormField(
decoration: InputDecoration(labelText: 'CPF'),
keyboardType: TextInputType.number,
validator: (value) {
if (!CpfValidator().isValid(value!)) {
return 'Invalid CPF';
}
return null;
},
onSaved: (value) {
_cpf = value!;
},
),
TextFormField(
decoration: InputDecoration(labelText: 'Phone'),
keyboardType: TextInputType.phone,
validator: (value) {
if (!PhoneValidator().isValid(value!)) {
return 'Invalid phone number';
}
return null;
},
onSaved: (value) {
_phone = value!;
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _validateInputs,
child: Text('Submit'),
),
],
),
),
),
);
}
}
在这个示例中,我们使用了all_validations_br
插件中的CpfValidator
和PhoneValidator
进行CPF和电话号码的验证。此外,我们还使用了Flutter内置的Form
和TextFormField
来创建表单,并添加了简单的名称和电子邮件验证。
请注意,PhoneValidator
可能需要根据巴西的具体电话号码格式进行调整,因为all_validations_br
插件中的验证规则可能针对特定的格式。你可能需要查阅该插件的文档来确认验证规则是否满足你的需求。