【发布时间】:2021-05-05 02:02:26
【问题描述】:
我试过 NumberFormat "#,##0.##"
我试过 NumberFormat "#,##0.00"
我试过 NumberFormat "#,##0.#0"
我想要的格式是 (123,4567.89)
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:intl/intl.dart';
class CurrencyFormat extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
// TODO: implement formatEditUpdate
if (newValue.selection.baseOffset == 0) {
return newValue;
}
double value = double.parse(newValue.text);
final money = NumberFormat("#,###.##", "en_US");
String newText = money.format(value);
return newValue.copyWith(
text: newText,
selection: TextSelection.collapsed(offset: newText.length));
}
}
我在 textformfield 小部件中调用此货币格式
'''
Widget mrpTextField() {
return Padding(
padding: const EdgeInsets.all(8.0),
child: TextFormField(
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
CurrencyFormat()
],
controller: _mrp,
validator: (value) {
if (value.isEmpty) {
return "MRP";
}else if (value.length > 6) {
return "";
}
return null;
},
decoration: InputDecoration(
labelText: "Enter MRP",
),
maxLines: null,
),
);
}
'''
【问题讨论】:
-
那么您希望格式是货币格式还是常规数字格式?您总是可以只使用
NumberFormat.currency或NumberFormat.simpleCurrency。 -
实际情况是我正在尝试创建一个应用程序,我想在其中限制用户输入最多 6 位数字,如果他使用十进制数字,则只能使用小数点后的 2 个数字跨度>
-
希望你明白我的意思
-
那你不要
NumberFormat,你要TextInputFormatter。 -
@sadhanchilka 在你的情况下,你应该使用
"#,###0.00",你可以在https://stackoverflow.com/questions/51738935/flutter-using-numberformat-in-textinputformatter找到解决方案
标签: flutter dart currency number-formatting flutter-intl