Flutter KeyboardType:TextInputType.number 不适用于 TextEditingController

问题描述 投票:0回答:4

在Flutter TextFeild中使用keyboardType:TextInputType.number以及TextEditingController类型的控制器时,无法直接使用数字键盘输入数字。首先,我必须按任何特殊符号,例如“.”、“-”,然后输入数字。

final expenseAmount = TextEditingController();
TextField(
          decoration: InputDecoration(
            labelText: "Amount",
          ),
          controller: expenseAmount,
          keyboardType: TextInputType.number,
        ),

Screen Shots 1st unable to type number 2nd after . able to type

flutter flutter-layout
4个回答
0
投票

我在使用

TextInputType.phone
时也遇到了类似的问题。执行这几行代码
controller.text = ''
后,数字键盘变得不可用。
controller.clean
这帮助我解决了问题。


0
投票

我也遇到了同样的问题,要解决这个问题,请确保您没有不恰当地重新初始化控制器,例如在小部件的构建方法中。


-1
投票

你应该试试这个

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
这里


-1
投票

更改此行

final expenseAmount = TextEditingController();

TextEditingController expenseAmount = TextEditingController();

我认为这会解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.