较量成熟有用的方案是在键盘弹出的上方悬浮一个按钮,点击可以封锁键盘。虽然了,这种题目也有对应的库可以办理,我行使的是flutter_keyboard_actions来办理了这个题目。由于在Android端我发明白部门输入法的兼容题目,以是只针对IOS做了处理赏罚。各人可以看一下前后比拟图,详细实当代码可以参考flutter_keyboard_actions的文档和我的项目代码:


虽然平台差别不只仅是这么多,好比IOS自带侧滑返回等。详细我们可以去查察挪用TargetPlatform列举类的代码。
假如你认为这样真贫困,我给你支个大招,修改ThemeData的platform,指定一个平台。
- class MyApp extends StatelessWidget {
-
- @override
- Widget build(BuildContext context) {
-
- return MaterialApp(
- theme: ThemeData(
- platform: TargetPlatform.android
- ),
- ...
- );
- }
- }
其次就是行使TextInputType.number在IOS中弹起的键盘没有小数点标记。在输入金额范例数据时,必要将keyboardType属性配置为TextInputType.numberWithOptions(decimal: true)。
6.keyboardType
keyboardType属性首要寄义为弹起的键盘范例,并不代表输入数据的范例。
而在Android开拓中,在EditText中配置android:inputType不只可以指定弹起的键盘范例,同时也确定了输入数据的范例,也就是内置了数据的名目校验。Flutter中并没有后者,以是也许一开始你是TextInputType.number,可是在输入法中切换成中文键盘,一样可以输入中笔墨符。以是数据的校验必要我们行使inputFormatters本身处理赏罚。
好比TextInputType.phone时可以行使WhitelistingTextInputFormatter 白名单校验,只应承输入0~9:
- TextField(
- keyboardType: TextInputType.phone,
- inputFormatters: [WhitelistingTextInputFormatter(RegExp("[0-9]"))]
- )
输入暗码时可以行使BlacklistingTextInputFormatter 黑名单校验,撤除中笔墨符:
- TextField(
- keyboardType: TextInputType.text,
- inputFormatters: [BlacklistingTextInputFormatter(RegExp("[u4e00-u9fa5]"))]
- )
输入小数时,可以自界说TextInputFormatter来限定输入小数名目:
- TextField(
- keyboardType: TextInputType.numberWithOptions(decimal: true),
- inputFormatters: [UsNumberTextInputFormatter()]
- )
- //来历:https://www.cnblogs.com/yangyxd/p/9639588.html
- class UsNumberTextInputFormatter extends TextInputFormatter {
- static const defaultDouble = 0.001;
- static double strToFloat(String str, [double defaultValue = defaultDouble]) {
- try {
- return double.parse(str);
- } catch (e) {
- return defaultValue;
- }
- }
- @override
- TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
- String value = newValue.text;
- int selectionIndex = newValue.selection.end;
- if (value == ".") {
- value = "0.";
- selectionIndex++;
- } else if (value != "" && value != defaultDouble.toString() && strToFloat(value, defaultDouble) == defaultDouble) {
- value = oldValue.text;
- selectionIndex = oldValue.selection.end;
- }
- return new TextEditingValue(
- text: value,
- selection: new TextSelection.collapsed(offset: selectionIndex),
- );
- }
- }
7.InkWell (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|