Flutter验证码生成插件verification_code_builder的使用
Flutter验证码生成插件verification_code_builder的使用
verification_code_builder
一个无限可定制的用于创建验证码输入表单的widget。
灵感来源于flutter_verification_code
特性
- 可以通过builder回调定义单元格小部件。你完全控制单元格的行为和外观!
- 内置粘贴操作支持。
- 支持退格键按下跟踪。如果你不喜欢额外的“清除所有”按钮,这特别有用。
- 自动焦点控制。你不需要自己定义焦点切换逻辑。在单元格小部件中只需调用
focus.nextFocus()当当前字段输入完成后——verification_code_builder会处理其余的事情。
待办事项
- 单元格内字符数量的派生支持
- 单元格正则表达式和
onError回调支持 isEditing标志getCurrentIndex方法- Logo
使用方法
1. 导入库
import 'package:verification_code_builder/verification_code_builder.dart';
2. 在需要的地方使用VerificationCode
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('VerificationCode'),
),
body: Center(
child: VerificationCode(
length: 6, // 设置单元格的数量
onCompleted: (String value) {
print("Code is $value"); // 设置结果的回调函数
},
builder: (index, focus, textEditingController, pasteMethod) { // 构建单元格小部件
return _generateSingleDigit(index, focus, textEditingController, pasteMethod);
},
),
)
);
}
// 构建单个数字单元格
Widget _generateSingleDigit(
int index, // VerificationCode小部件中的单元格索引
FocusNode focus, // 当前单元格的焦点。VerificationCode使用它来管理单元格的焦点
TextEditingController textEditingController, // 单元格输入处理器
PasteMethod pasteMethod // 粘贴机制。使用它执行粘贴(例如使用SelectionControls)
) {
return Container(
height: 48,
width: 48,
margin: EdgeInsets.only(left: 3),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(8)),
color: Colors.grey),
child: Center(
child: TextField( // 如果你基于TextField构建单元格...
controller: textEditingController, // 只需在这里插入textEditingController参数
focusNode: focus, // 和焦点在这里
autofocus: index == 0, // 可以使用索引来自动聚焦第一个单元格
// 使用此自定义SelectionControls小部件以获得“原生”般的粘贴体验
selectionControls: VerificationSelectionControls.create(pasteMethod),
inputFormatters: [FilteringTextInputFormatter.digitsOnly, LengthLimitingTextInputFormatter(1)],
keyboardType: TextInputType.number,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.black,
fontSize: 30,
fontWeight: FontWeight.w700,
),
onChanged: (str) => {
if (str.isNotEmpty) {
index == 5 ? FocusScope.of(context).unfocus() : focus.nextFocus()
}
},
),
),
);
}
更多关于Flutter验证码生成插件verification_code_builder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter验证码生成插件verification_code_builder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
verification_code_builder 是一个用于生成验证码的 Flutter 插件。它可以帮助你快速生成自定义的验证码,并且可以轻松地集成到你的 Flutter 应用中。以下是如何使用 verification_code_builder 插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml 文件中添加 verification_code_builder 插件的依赖。
dependencies:
flutter:
sdk: flutter
verification_code_builder: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get 来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 verification_code_builder 插件。
import 'package:verification_code_builder/verification_code_builder.dart';
3. 使用 VerificationCodeBuilder
VerificationCodeBuilder 是一个小部件,你可以将它添加到你的 UI 中。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:verification_code_builder/verification_code_builder.dart';
class VerificationCodeScreen extends StatefulWidget {
@override
_VerificationCodeScreenState createState() => _VerificationCodeScreenState();
}
class _VerificationCodeScreenState extends State<VerificationCodeScreen> {
String _verificationCode = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Verification Code'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
VerificationCodeBuilder(
length: 6, // 验证码的长度
onChanged: (code) {
setState(() {
_verificationCode = code;
});
},
builder: (context, code) {
return Text(
code,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
);
},
),
SizedBox(height: 20),
Text(
'Entered Code: $_verificationCode',
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}
4. 自定义验证码样式
你可以通过 builder 参数来自定义验证码的显示样式。例如,你可以使用 Container 和 Text 来创建自定义的验证码显示。
VerificationCodeBuilder(
length: 6,
onChanged: (code) {
setState(() {
_verificationCode = code;
});
},
builder: (context, code) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: code.split('').map((char) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 4),
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
border: Border.all(color: Colors.black),
borderRadius: BorderRadius.circular(4),
),
child: Text(
char,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
);
}).toList(),
);
},
),
5. 处理验证码输入
onChanged 回调会在用户输入验证码时触发。你可以在这个回调中处理验证码的输入逻辑,例如验证用户输入的验证码是否正确。
VerificationCodeBuilder(
length: 6,
onChanged: (code) {
setState(() {
_verificationCode = code;
});
if (code.length == 6) {
// 验证码输入完成,进行验证
_verifyCode(code);
}
},
builder: (context, code) {
return Text(
code,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
);
},
),
6. 验证码验证逻辑
你可以在 _verifyCode 方法中实现验证码的验证逻辑。
void _verifyCode(String code) {
// 这里可以实现验证码的验证逻辑
if (code == '123456') {
// 验证码正确
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('验证码正确')),
);
} else {
// 验证码错误
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('验证码错误')),
);
}
}
7. 其他配置
VerificationCodeBuilder 还提供了其他一些配置选项,例如:
autofocus: 是否自动聚焦输入框。keyboardType: 输入框的键盘类型。obscureText: 是否隐藏输入的字符。
VerificationCodeBuilder(
length: 6,
autofocus: true,
keyboardType: TextInputType.number,
obscureText: true,
onChanged: (code) {
setState(() {
_verificationCode = code;
});
},
builder: (context, code) {
return Text(
code,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
);
},
),

