PinPut
此小部件占满父小部件的整个宽度,并以创建 PIN 码输入字段外观的方式布局文本字段,它可以接受任何长度的字符串,并在所有字段都填写完毕后调用 onSubmit 方法。

属性
| 属性 | 默认/含义 |
|---|---|
| onSubmit | @required 函数 |
| fieldsCount | @required 数字 |
| isTextObscure | 假 |
| 文本样式 | TextStyle(fontSize: 30) |
| spaceBetween | 字段之间的间距 默认:10.0 |
| clearButtonIcon | Icon(Icons.backspace, size: 30) |
| pasteButtonIcon | Icon(Icons.content_paste, size: 30) |
| unFocusWhen | 默认为 False,为 True 时隐藏键盘 |
| inputDecoration | 可样式化字段边框、填充等... |
| keybaordType | 数字 |
| keyboardAction | next |
| actionButtonEnabled | 真 |
| autoFocus | 真 |
| textCapitalization | TextCapitalization.none |
示例
导入包
import 'package:flutter/material.dart';
import 'package:pinput/pin_put/pin_put.dart';
void main() => runApp(PinPutTest());
class PinPutTest extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primaryColor: Colors.green,
hintColor: Colors.green,
),
home: Scaffold(
body: Builder(
builder: (context) => Padding(
padding: const EdgeInsets.all(40.0),
child: Center(
child: PinPut(
fieldsCount: 4,
onSubmit: (String pin) => _showSnackBar(pin, context),
),
),
),
)));
}
void _showSnackBar(String pin, BuildContext context) {
final snackBar = SnackBar(
duration: Duration(seconds: 5),
content: Container(
height: 80.0,
child: Center(
child: Text(
'Pin Submitted. Value: $pin',
style: TextStyle(fontSize: 25.0),
),
)),
backgroundColor: Colors.greenAccent,
);
Scaffold.of(context).showSnackBar(snackBar);
}
}