由于业务需求,要限制TextField只能输入中文,但是测试在iOS测试机发现自带中文输入法会变英文输入问题,安卓没有问题,并且只有iOS自带输入法有问题,搜狗等输入法没问题。我们目前使用flutter2.5.3版本,高版本应该不存在这个问题。
TextField限制中文代码片段:
TextField(
inputFormatters: [
FilteringTextInputFormatter.allow(RegExp('[a-zA-Z]|[\u4e00-\u9fa5]|[0-9]')),
],
)
解决方案,自定义过滤器:
//自定义过滤器
class CustomizedTextInputFormatter extends TextInputFormatter {
final Pattern filterPattern;
CustomizedTextInputFormatter({this.filterPattern})
: assert(filterPattern != null);
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue,
TextEditingValue newValue,
) {
if (newValue.isComposingRangeValid) return newValue;
return FilteringTextInputFormatter.allow(filterPattern)
.formatEditUpdate(oldValue, newValue);
}
}
TextField(
inputFormatters: [
//使用自定义过滤器,限制中文输入
CustomizedTextInputFormatter(
filterPattern: RegExp("[a-zA-Z]|[\u4e00-\u9fa5]|[0-9]"),
),
],
),