加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Flutter 开拓中的一些 Tips

发布时间:2019-06-21 22:37:56 所属栏目:业界 来源:唯鹿lv-2
导读:进修Flutter也有一阵子了。闲着没事,用了公司一个已经凉凉的App计划图来练手。虽然了接口不行能用的了,以是都是些死数据,实现结果可以说是很美满了(获得了计划的承认。。。)。虽然本身也是边查边写,也小心了很多Github上优越的Flutter项目。此刻开源出

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

Flutter 开拓中的一些 Tips

Flutter 开拓中的一些 Tips

虽然平台差别不只仅是这么多,好比IOS自带侧滑返回等。详细我们可以去查察挪用TargetPlatform列举类的代码。

假如你认为这样真贫困,我给你支个大招,修改ThemeData的platform,指定一个平台。

  1. class MyApp extends StatelessWidget { 
  2.    
  3.   @override 
  4.   Widget build(BuildContext context) { 
  5.      
  6.     return MaterialApp( 
  7.       theme: ThemeData( 
  8.         platform: TargetPlatform.android 
  9.       ), 
  10.       ... 
  11.     ); 
  12.   } 

其次就是行使TextInputType.number在IOS中弹起的键盘没有小数点标记。在输入金额范例数据时,必要将keyboardType属性配置为TextInputType.numberWithOptions(decimal: true)。

6.keyboardType

keyboardType属性首要寄义为弹起的键盘范例,并不代表输入数据的范例。

而在Android开拓中,在EditText中配置android:inputType不只可以指定弹起的键盘范例,同时也确定了输入数据的范例,也就是内置了数据的名目校验。Flutter中并没有后者,以是也许一开始你是TextInputType.number,可是在输入法中切换成中文键盘,一样可以输入中笔墨符。以是数据的校验必要我们行使inputFormatters本身处理赏罚。

好比TextInputType.phone时可以行使WhitelistingTextInputFormatter 白名单校验,只应承输入0~9:

  1. TextField( 
  2.       keyboardType: TextInputType.phone, 
  3.       inputFormatters: [WhitelistingTextInputFormatter(RegExp("[0-9]"))] 
  4.     ) 

输入暗码时可以行使BlacklistingTextInputFormatter 黑名单校验,撤除中笔墨符:

  1. TextField( 
  2.       keyboardType: TextInputType.text, 
  3.       inputFormatters: [BlacklistingTextInputFormatter(RegExp("[u4e00-u9fa5]"))] 
  4.     ) 

输入小数时,可以自界说TextInputFormatter来限定输入小数名目:

  1. TextField( 
  2.       keyboardType: TextInputType.numberWithOptions(decimal: true), 
  3.       inputFormatters: [UsNumberTextInputFormatter()] 
  4.     ) 
  5. //来历:https://www.cnblogs.com/yangyxd/p/9639588.html 
  6. class UsNumberTextInputFormatter extends TextInputFormatter { 
  7.   static const defaultDouble = 0.001; 
  8.   static double strToFloat(String str, [double defaultValue = defaultDouble]) { 
  9.     try { 
  10.       return double.parse(str); 
  11.     } catch (e) { 
  12.       return defaultValue; 
  13.     } 
  14.   } 
  15.   @override 
  16.   TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) { 
  17.     String value = newValue.text; 
  18.     int selectionIndex = newValue.selection.end; 
  19.     if (value == ".") { 
  20.       value = "0."; 
  21.       selectionIndex++; 
  22.     } else if (value != "" && value != defaultDouble.toString() && strToFloat(value, defaultDouble) == defaultDouble) { 
  23.       value = oldValue.text; 
  24.       selectionIndex = oldValue.selection.end; 
  25.     } 
  26.     return new TextEditingValue( 
  27.       text: value, 
  28.       selection: new TextSelection.collapsed(offset: selectionIndex), 
  29.     ); 
  30.   } 

7.InkWell

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读