我尝试扩展Flutter的TextInputFormatter
,以在用户键入时动态添加千位逗号分隔符。
import 'package:flutter/services.dart';
class ThousandSeparatorTextInputFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue,
TextEditingValue newValue) {
return newValue.copyWith(
text: _addThousandsSeparator(newValue.text)
);
}
// This adds thousand comma separator
String _addThousandsSeparator(String value) {
RegExp reg = RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))');
Function determine = (Match match) => '${match[1]},';
return value.replaceAllMapped(reg, determine);
}
}
问题是当在TextField
中使用逗号分隔符时,它第一次出现在正确的位置,因为用户不断输入分隔符会出现在最后三个数字的后面。
当_addThousandSeparator函数单独使用(即在某些值上)时,它确实起作用。我在做什么错了?