TextInputClient 中添加了 showAutocorrectionPromptRect 方法
摘要
#TextInputClient
接口添加了一个新方法 void showAutocorrectionPromptRect(int start, int end)
。
背景
#为了显示 iOS 自动更正高亮显示,iOS 文本输入插件需要一种方法来告知 Flutter 框架高亮显示的起始和结束位置。
变更描述
#TextInputClient
接口添加了一个新方法 void showAutocorrectionPromptRect(int start, int end)
。当 iOS 在当前用户输入中找到新的潜在自动更正候选对象,或先前高亮显示的候选对象的范围发生变化时,iOS 会调用此方法。
迁移指南
#如果您的应用程序没有实现或子类化 TextInputClient
,则不需要迁移。如果您的应用程序不针对 iOS,或者实现 textInputClient
接口的类不支持自动更正,您只需要为新方法添加一个空实现:
dart
class CustomTextInputClient implements TextInputClient {
void showAutocorrectionPromptRect(int start, int end) {}
}
否则,如果您的应用程序针对 iOS 并支持 iOS 上的自动更正,我们建议您向您的 TextInputClient
子类添加 void showAutocorrectionPromptRect(int start, int end)
的合理实现。
迁移后的代码:
dart
// 假设您的 `TextInputClient` 是一个 `State` 子类,并且它有一个变量 `_currentPromptRectRange` 来控制自动更正高亮显示。
class CustomTextInputClient extends State<...> implements TextInputClient {
@override
void updateEditingValue(TextEditingValue value) {
// 当文本更改时,需要取消高亮显示。
if (value.text != _value.text) {
setState(() {
_currentPromptRectRange = null;
});
}
}
void _handleFocusChanged() {
// 当此文本输入失去焦点时,需要取消自动更正高亮显示。
if (!_hasFocus) {
setState(() {
_currentPromptRectRange = null;
});
}
}
@override
void showAutocorrectionPromptRect(int start, int end) {
// 根据 iOS 的请求更新高亮显示的范围。
// 当 iOS 决定取消高亮显示时,不会调用此方法。
setState(() {
_currentPromptRectRange = TextRange(start: start, end: end);
});
}
}
时间线
#稳定版发布:1.20
参考
#API 文档:
相关问题:
相关 PR:
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。