Flutter账号注册格式校验插件check_sign_up_format的使用
Flutter账号注册格式校验插件check_sign_up_format的使用
概述
check_sign_up_format
是一个用于验证用户输入是否符合特定格式要求的 Dart 库。该库提供了多种验证函数,包括对名字、ID、电子邮件、密码、密码确认以及电话号码的格式校验。
特性
- 名字校验(仅允许字母字符)。
- ID 校验(仅允许英文字母和数字)。
- 邮件地址校验(符合标准的电子邮件格式)。
- 密码校验(包含字母、数字和特殊字符的组合)。
- 密码确认校验(两次输入的密码是否一致)。
- 电话号码校验(仅允许数字)。
使用步骤
1. 添加依赖
在 pubspec.yaml
文件中添加 check_sign_up_format
依赖:
dependencies:
check_sign_up_format: ^版本号
然后运行以下命令以安装依赖:
flutter pub get
2. 创建校验示例
以下是一个完整的 Flutter 示例代码,展示了如何使用 check_sign_up_format
插件进行账号注册格式校验。
示例代码
import 'package:check_sign_up_format/check_sign_up_format.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'check sign up format',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const CheckSignUpFormatTest(),
);
}
}
class CheckSignUpFormatTest extends StatefulWidget {
const CheckSignUpFormatTest({super.key});
[@override](/user/override)
State<CheckSignUpFormatTest> createState() => _CheckSignUpFormatTestState();
}
class _CheckSignUpFormatTestState extends State<CheckSignUpFormatTest> {
// 定义全局表单键
final nameFormKey = GlobalKey<FormState>();
final idFormKey = GlobalKey<FormState>();
final emailFormKey = GlobalKey<FormState>();
final passwordFormKey = GlobalKey<FormState>();
final verifyPasswordFormKey = GlobalKey<FormState>();
final phoneNumFormKey = GlobalKey<FormState>();
// 定义焦点节点
final FocusNode nameFocusNode = FocusNode();
final FocusNode idFocusNode = FocusNode();
final FocusNode emailFocusNode = FocusNode();
final FocusNode passwordFocusNode = FocusNode();
final FocusNode verifyPasswordFocusNode = FocusNode();
final FocusNode phoneNumFocusNode = FocusNode();
// 定义文本控制器
final TextEditingController nameTextController = TextEditingController();
final TextEditingController idTextController = TextEditingController();
final TextEditingController emailTextController = TextEditingController();
final TextEditingController passwordTextController = TextEditingController();
final TextEditingController verifyPasswordTextController = TextEditingController();
final TextEditingController phoneNumTextController = TextEditingController();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("check sign up format"),
),
body: Padding(
padding: const EdgeInsetsDirectional.all(20),
child: Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 名字字段
testTextField(
'name',
nameFormKey,
nameFocusNode,
nameTextController,
Validator.nameValidator,
'input name',
false,
),
// ID 字段
testTextField(
'id',
idFormKey,
idFocusNode,
idTextController,
Validator.idValidator,
'input id',
false,
),
// 邮件字段
testTextField(
'email',
emailFormKey,
emailFocusNode,
emailTextController,
Validator.emailValidator,
'input email',
false,
),
// 密码字段
testTextField(
'password',
passwordFormKey,
passwordFocusNode,
passwordTextController,
Validator.passwordValidator,
'input password',
true,
),
// 确认密码字段
testTextField(
'verify password',
verifyPasswordFormKey,
verifyPasswordFocusNode,
verifyPasswordTextController,
Validator.verifyPasswordValidator,
'input password',
true,
),
// 电话号码字段
testTextField(
'phone number',
phoneNumFormKey,
phoneNumFocusNode,
phoneNumTextController,
Validator.phoneNumValidator,
'input phone number',
false,
),
// 提交按钮
checkButton(),
],
),
),
),
),
);
}
// 构建单个输入框
Widget testTextField(String title,
GlobalKey? globalKey,
FocusNode? focusNode,
TextEditingController? controller,
Function? validator,
String hintText,
bool isObscure) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(title),
const SizedBox(height: 10),
Form(
key: globalKey,
child: TextFormField(
focusNode: focusNode,
controller: controller,
validator: (value) {
// 对于确认密码字段,需要与主密码进行对比
if (title == 'verify password') {
return validator!(value, passwordTextController.text);
}
return validator!(value);
},
style: const TextStyle(
color: Colors.black,
fontSize: 16,
fontWeight: FontWeight.w400),
decoration: InputDecoration(
contentPadding: const EdgeInsetsDirectional.all(20),
hintText: hintText,
hintStyle: const TextStyle(
color: Colors.black12,
fontSize: 16,
fontWeight: FontWeight.w400),
errorStyle: const TextStyle(
color: Colors.red,
fontSize: 12,
fontWeight: FontWeight.w400),
enabledBorder: const OutlineInputBorder(),
focusedBorder: const OutlineInputBorder(),
focusedErrorBorder: const OutlineInputBorder(
borderSide: BorderSide(color: Colors.red)),
errorBorder: const OutlineInputBorder(
borderSide: BorderSide(color: Colors.red)),
),
obscureText: isObscure,
),
),
const SizedBox(height: 30),
],
);
}
// 构建提交按钮
Widget checkButton() {
return ElevatedButton(
onPressed: () {
// 验证所有表单字段
nameFormKey.currentState!.validate();
idFormKey.currentState!.validate();
emailFormKey.currentState!.validate();
passwordFormKey.currentState!.validate();
verifyPasswordFormKey.currentState!.validate();
phoneNumFormKey.currentState!.validate();
},
child: const Text('check'),
);
}
}
更多关于Flutter账号注册格式校验插件check_sign_up_format的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter账号注册格式校验插件check_sign_up_format的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,check_sign_up_format
是一个用于校验账号注册格式的插件。它可以帮助开发者快速验证用户输入的账号、密码、邮箱等是否符合指定的格式要求。以下是如何使用 check_sign_up_format
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 check_sign_up_format
插件的依赖:
dependencies:
flutter:
sdk: flutter
check_sign_up_format: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 check_sign_up_format
插件:
import 'package:check_sign_up_format/check_sign_up_format.dart';
3. 使用插件进行校验
check_sign_up_format
插件提供了多种方法来校验不同的输入格式。以下是一些常见的用法:
校验邮箱格式
bool isValidEmail = CheckSignUpFormat.isEmail('example@example.com');
if (isValidEmail) {
print('邮箱格式正确');
} else {
print('邮箱格式错误');
}
校验密码格式
bool isValidPassword = CheckSignUpFormat.isPassword('Password123');
if (isValidPassword) {
print('密码格式正确');
} else {
print('密码格式错误');
}
校验手机号格式
bool isValidPhone = CheckSignUpFormat.isPhoneNumber('1234567890');
if (isValidPhone) {
print('手机号格式正确');
} else {
print('手机号格式错误');
}
校验用户名格式
bool isValidUsername = CheckSignUpFormat.isUsername('user_name123');
if (isValidUsername) {
print('用户名格式正确');
} else {
print('用户名格式错误');
}
4. 自定义校验规则
check_sign_up_format
插件也允许你自定义校验规则。例如,你可以自定义密码的最小长度和最大长度:
bool isValidPassword = CheckSignUpFormat.isPassword('Password123', minLength: 8, maxLength: 20);
if (isValidPassword) {
print('密码格式正确');
} else {
print('密码格式错误');
}
5. 处理校验结果
你可以根据校验结果来决定是否允许用户继续注册流程。例如:
void signUp(String email, String password) {
if (CheckSignUpFormat.isEmail(email) && CheckSignUpFormat.isPassword(password)) {
// 继续注册流程
print('注册成功');
} else {
// 显示错误信息
print('注册失败,请检查输入格式');
}
}
6. 错误提示
你还可以使用 CheckSignUpFormat
提供的错误提示信息来指导用户输入正确的格式:
String email = 'example@example.com';
if (!CheckSignUpFormat.isEmail(email)) {
print(CheckSignUpFormat.getEmailErrorMessage());
}