向 TextInputClient 添加 showAutocorrectionPromptRect 方法
摘要
#在 TextInputClient
接口中添加了一个新方法 void showAutocorrectionPromptRect(int start, int end)
。
上下文
#为了显示 iOS 自动更正高亮显示,iOS 文本输入插件需要一种方法来通知 Flutter 框架高亮显示的起始和结束位置。
更改说明
#在 TextInputClient
接口中添加了一个新方法 void showAutocorrectionPromptRect(int start, int end)
。当 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
// Assume your `TextInputClient` is a `State` subclass, and it has a variable
// `_currentPromptRectRange` that controls the autocorrection highlight.
class CustomTextInputClient extends State<...> implements TextInputClient {
@override
void updateEditingValue(TextEditingValue value) {
// When the text changes, the highlight needs to be dismissed.
if (value.text != _value.text) {
setState(() {
_currentPromptRectRange = null;
});
}
}
void _handleFocusChanged() {
// When this text input loses focus, the autocorrection highlight needs
// to be dismissed.
if (!_hasFocus) {
setState(() {
_currentPromptRectRange = null;
});
}
}
@override
void showAutocorrectionPromptRect(int start, int end) {
// Updates the range of the highlight, as iOS requested.
// This method isn't called when iOS decides to
// dismiss the highlight.
setState(() {
_currentPromptRectRange = TextRange(start: start, end: end);
});
}
}
时间线
#稳定版发布:1.20
参考
#API 文档
相关问题
相关 PR
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新时间为 2024-04-04。 查看源代码 或 报告问题.