简体   繁体   English

用flutter中的字符拆分textformfield中的文本

[英]split text in textformfield with a character in flutter

可能有人遇到过这样的问题,我需要配置textformfield,让文本以/的格式输入到form中,这样用户就不用自己输入/了,貌似需要使用inputformatter,但是我可以不知道怎么做

    maskformatter.dart

class MaskedTextInputFormatter extends TextInputFormatter {
  final String? mask;
  final String? separator;

  MaskedTextInputFormatter({
    @required this.mask,
    @required this.separator,
  }) {
    assert(mask != null);
    assert(separator != null);
  }

  @override
  TextEditingValue formatEditUpdate(
      TextEditingValue oldValue, TextEditingValue newValue) {
    if (newValue.text.isNotEmpty) {
      if (newValue.text.length > oldValue.text.length) {
        if (newValue.text.length > mask!.length) return oldValue;
        if (newValue.text.length < mask!.length &&
            mask![newValue.text.length - 1] == separator) {
          return TextEditingValue(
            text:
                '${oldValue.text}$separator${newValue.text.substring(newValue.text.length - 1)}',
            selection: TextSelection.collapsed(
              offset: newValue.selection.end + 1,
            ),
          );
        }
      }
    }
    return newValue;
  }

in textfield use :-在文本字段中使用:-

inputFormatter: [
                   MaskedTextInputFormatter(
                   mask: '****-****-****-****',
                   separator: '-',
                  ),
                ]

I think you are looking for mask text.我认为您正在寻找掩码文本。 Try this package mask_text试试这个包mask_text

var maskFormatter = new MaskTextInputFormatter(
  mask: '+# (###) ###-##-##', 
  filter: { "#": RegExp(r'[0-9]') },
  type: MaskAutoCompletionType.lazy
);

And assign it to the textfield并将其分配给文本字段

TextField(inputFormatters: [maskFormatter])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM