Flutter 侧滑会导致 TextField 获取不到焦点?

最近 Flutter写功能的时候发现一个 bug :侧滑会导致 TextField 获取不到焦点 无法继续编辑文本内容

flutter版本是 3.22.1 目前是最新的版本 以前的版本不确定有没有类似情况

场景:

ios 自带有侧滑功能, A界面有 TextField, B 界面也有 TextField

触发:

从 A 界面跳转到 B 界面 然后在 B 界面触发侧滑 返回到 A界面或者侧滑一点还停留在 B 界面

查找问题:

断点调试发现 没侧滑或者点击返回按钮时 FocusNode#b87c0(context: Focus)
但是侧滑返回的时候 FocusNode#b87c0(context: Focus, NOT FOCUSABLE)
多了一个 NOT FOCUSABLE
会将canRequestFocus改为false

解决:

统一处理方法:新建CustomFocusNode类 将canRequestFocus设置为true

1
2
3
4
class CustomFocusNode extends FocusNode {
@override
bool get canRequestFocus => true;
}

再将使用到 FocusNode focusNode = FocusNode();初始化的地方 替换为 CustomFocusNode focusNode = CustomFocusNode();即可。