flutter 文本输入类型.numberWithOptions不显示逗号或点

q8l4jmvw  于 2022-12-14  发布在  Flutter
关注(0)|答案(4)|浏览(182)
TextInputType.numberWithOptions(decimal: true),

我在我的TextFormField中使用上面的代码作为keyboardType,但是在一些设备中,设备不显示逗号或圆点。屏幕截图如下:

考虑使用此软件包:https://pub.dev/packages/virtual_keyboard
有什么解决的办法吗?
这并没有解决我的问题,因为在我的情况下,它发生在Android上。Flutter TextField with number keyboard, comma is needed instead of period (Only iOS)

3j86kqsm

3j86kqsm1#

此参数将解决问题

keyboardType: TextInputType.numberWithOptions(decimal: true),
b1uwtaje

b1uwtaje2#

这是三星键盘中众所周知的 Android 问题
https://github.com/flutter/flutter/issues/61175

顶级域名;

通常,解决方法是回退到文本键盘。
我开发了一个包含此解决方案的软件包,以轻松获取键盘供应商名称,然后创建一些巧妙的if samsung then TextInputType.text
软件包:键盘名称
然而,这并没有解决问题。

长而***凉爽***的方式

第一:格式化输入器

  • 注意:我没有找到启用逗号的方法 *

将输入的点转换为逗号,不用担心禁用的逗号
为此,您需要扩展文本输入格式化程序

class CommaFormatter extends TextInputFormatter {
  @override
  TextEditingValue formatEditUpdate(
    TextEditingValue oldValue,
    TextEditingValue newValue,
  ) {
    String _text = newValue.text;
    //This is only if you need signed numbers. Will convert the first '.'(dot) to '-'(minus)
    //if (_text.isNotEmpty && _text[0] == '.') 
    //  _text = _text.replaceFirst('.', '-');
    return newValue.copyWith(
      text: _text.replaceAll('.', ','),
    );
  }
}

此外,您还可以在此正则表达式之后放置另一个要格式化的 smartass 正则表达式

TextFormField(
    inputFormatters: [
        CommaFormatter(),
        FilteringTextInputFormatter.allow(
                        RegExp(
                          //r'^[-]{0,1}[0-9]*[,]?[0-9]*', //signed regex    
                          r'^[0-9]*[,]?[0-9]*', 
                        ),
                      ),
    ],
    /.../
    }
v7pvogib

v7pvogib3#

在iOS上,你必须在iOS构建设置中启用de(或除en_US之外的任何其他语言环境)语言环境,即使是Flutter应用程序。
1.打开flutter项目中的IOS文件夹
1.在IOS文件夹中,使用xCode打开Runner.xcworkspace文件夹。
1.点击跑步机,你会看到一堆选项,点击信息,并在本地化本地开发地区选择美国。
1.重新生成项目Here is the image attached

gopyfrb3

gopyfrb34#

也许有点晚了。这将解决所有的数字问题:

keyboardType: TextInputType.numberWithOptions(decimal: true, signed: true)

相关问题