fix_ios_input_formatter.dart
1.08 KB
import 'dart:io';
import 'package:flutter/services.dart';
/// https://github.com/flutter/flutter/issues/25511
/// 主要针对TextInput有设置maxLength且在iOS平台使用原生输入法输入中文时崩溃问题。
/// 使用方法:
/// TextField(
/// inputFormatters: [FixIOSTextInputFormatter()],
/// )
/// 使用后问题是输入的拼音不展示。
///
/// 1.22已修复:https://github.com/flutter/flutter/pull/63754
@Deprecated('1.22已修复')
class FixIOSTextInputFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
if (Platform.isIOS) {
// ios Composing变化也执行format,因为在拼音阶段没有执行LengthLimitingTextInputFormatter,从拼音到汉字需要重新执行
if (newValue.composing.isValid) {
// ios拼音阶段不执行长度限制的format
return TextEditingValue.empty;
}
}
return TextEditingValue(
text: newValue.text,
selection: TextSelection.collapsed(offset: newValue.selection.end),
);
}
}