如何使用 TextEditorController 将文本字段中的数字格式化为货币

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

我有一个文本字段,用户输入一个数字,即价格。现在,它显示为数字(即 456000),没有任何格式。

我希望能够在用户输入货币数字(即 456,000 美元或 456,000.00 美元)时对其进行格式化。

我已经看过,但找不到任何与 TextField 和 TextEditorControllers 一起使用的东西。

这是我正在编写的代码:

final moneyFormatter = NumberFormat("#,##0.00", "en_US");

TextField(
                  keyboardType: TextInputType.number,
                  controller: contractPriceController,
                  textAlign: TextAlign.center,
                  onChanged: (value) {
                    contractPriceController.text = moneyFormatter.format(contractPriceController.text);
                  },
                  decoration: const InputDecoration(
                      hintText: 'Contract Price', labelText: 'Contract Price'),
                ),

这段代码什么也没做,只是给了我相同的未格式化的数字。

任何人都可以分享一个好的解决方案或我将如何做到这一点的示例吗? 谢谢

flutter dart formatting
1个回答
0
投票

如果您只处理一种货币,以下解决方案效果很好。

 TextFormField(
                controller: contractPriceController,
                inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d{0,2}'))],
                autocorrect: false,
                keyboardType: TextInputType.numberWithOptions(decimal: true),
                decoration: InputDecoration(prefix: '$ ')
     )

您可以在

TextFormField
中添加其他所需参数,上面的代码也应该适用于
TextField

此处

inputFormatters
提供允许带小数且小数点后仅两位数的数字。

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