在Flutter TextFeild中使用keyboardType:TextInputType.number以及TextEditingController类型的控制器时,无法直接使用数字键盘输入数字。首先,我必须按任何特殊符号,例如“.”、“-”,然后输入数字。
final expenseAmount = TextEditingController();
TextField(
decoration: InputDecoration(
labelText: "Amount",
),
controller: expenseAmount,
keyboardType: TextInputType.number,
),
我在使用
TextInputType.phone
时也遇到了类似的问题。执行这几行代码controller.text = ''
后,数字键盘变得不可用。 controller.clean
这帮助我解决了问题。
我也遇到了同样的问题,要解决这个问题,请确保您没有不恰当地重新初始化控制器,例如在小部件的构建方法中。
final TextEditingController price = new TextEditingController();
TextFormField(
controller: price,
keyboardType: TextInputType.number,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Amount',
hintText: 'MRP',
),
textInputAction: TextInputAction.done,
),
其他解决方案: 您添加包:
import 'package:flutter/services.dart';
TextFormField(
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(r'[0-9]'),
),
],
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Price',
hintText: '0.00',
),
),
参考
FilteringTextInputFormatter
这里
更改此行
final expenseAmount = TextEditingController();
到
TextEditingController expenseAmount = TextEditingController();
我认为这会解决你的问题。