[英]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.