Flutter TextInputFormatter不执行预期的操作

时间:2019-01-03 11:28:15

标签: dart flutter

我尝试扩展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函数单独使用(即在某些值上)时,它确实起作用。我在做什么错了?

0 个答案:

没有答案