1

我有一个颤振应用程序,它使用文本表单字段接受一定数量的钱作为输入。我想格式化 textformfield 中的输入,以便输入的任何内容都可以格式化为带有千位分隔符逗号的货币 copmlete。我尝试过使用 intl 包号格式化程序,但我所能做的就是将它打印到命令行。

这是它目前的样子

目前的样子

这就是我希望它看起来的样子

想要的样子

这是文本字段代码

  TextEditingController currencyControler = TextEditingController();

  String? amount;

 TextFormField(
              controller: currencyControler,
              keyboardType: TextInputType.number,
              validator: (value) {
                if (value!.isEmpty) {
                  return 'Please enter an amount';
                }
                return null;
              },
              onSaved: (String? value) {
                amount = value;
              },
              decoration: InputDecoration(
                icon: const Icon(Icons.money_outlined),
                labelText: "Amount",
                hintText: 'Enter an amount',
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8.0),
                ),
              ),
            )

如何格式化输入,以便逗号分隔符显示为输入任何数字

4

1 回答 1

1

试试下面的代码希望它对你有帮助。在这里intl使用包来形成数字

你的职能:

  TextEditingController currencyControler = TextEditingController(); 
  String formNum(String s) {
    return NumberFormat.decimalPattern().format(
      int.parse(s),
    );
  }

您的小部件:

   TextFormField(
              controller: currencyControler,
              decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  prefixIcon: Icon(
                    Icons.money,
                  )),
              keyboardType: TextInputType.number,
              onChanged: (string) {
                string = '${formNum(
                  string.replaceAll(',', ''),
                )}';
                currencyControler.value = TextEditingValue(
                  text: string,
                  selection: TextSelection.collapsed(
                    offset: string.length,
                  ),
                );
              },
            ),
           

您的结果屏幕->图片

于 2021-11-18T08:38:21.603 回答