Flutter应用中如何添加阿拉伯数字输入键盘?
在Flutter中配置阿拉伯数字输入键盘的可行方案
基础系统键盘配置
给TextField指定keyboardType为TextInputType.number或TextInputType.phone,系统会自动弹出以阿拉伯数字为主的键盘。如果需要限制只能输入纯数字,搭配inputFormatters做过滤:TextField( keyboardType: TextInputType.number, inputFormatters: [FilteringTextInputFormatter.digitsOnly], decoration: InputDecoration(labelText: "输入阿拉伯数字"), )解决iOS区域导致的数字显示异常
部分iOS设备会根据系统区域显示本地数字(比如印度数字),可以通过两种方式修正:// 方式1:强制文本方向为左到右 TextField( keyboardType: TextInputType.number, textDirection: TextDirection.ltr, inputFormatters: [FilteringTextInputFormatter.digitsOnly], ) // 方式2:临时切换为英语区域,确保键盘显示阿拉伯数字 Localizations.override( context: context, locale: Locale('en'), child: TextField( keyboardType: TextInputType.number, inputFormatters: [FilteringTextInputFormatter.digitsOnly], ), )自定义数字键盘(极端场景)
如果系统键盘始终不符合需求,直接自定义一个数字键盘组件完全控制输入逻辑:final TextEditingController _numController = TextEditingController(); Widget _buildCustomNumKeyboard() { return GridView.count( shrinkWrap: true, crossAxisCount: 3, children: [ for (int i = 1; i <= 9; i++) TextButton( child: Text("$i", style: TextStyle(fontSize: 20)), onPressed: () => _numController.text += "$i", ), SizedBox(), // 占位 TextButton( child: Text("0", style: TextStyle(fontSize: 20)), onPressed: () => _numController.text += "0", ), TextButton( child: Text("←", style: TextStyle(fontSize: 20)), onPressed: () { if (_numController.text.isNotEmpty) { _numController.text = _numController.text.substring(0, _numController.text.length - 1); } }, ), ], ); } // 界面中使用 @override Widget build(BuildContext context) { return Column( children: [ TextField( controller: _numController, enabled: false, // 禁用系统键盘,只用自定义键盘 decoration: InputDecoration(labelText: "自定义数字输入"), ), _buildCustomNumKeyboard(), ], ); }
内容的提问来源于stack exchange,提问作者Nimra
相关产品推荐
相关产品推荐

