1.先看图,a页面有焦点,并且弹起输入法,然后点击去B页面,此时b页面也有输入法,并且是设置了自动获取焦点,
此时,返回a页面,发现输入法还在
2.继续图2,在a页面弹起输入法,然后手动点击底部虚拟键回退键,隐藏输入法之后,进入b页面,然后返回a页面,输入法又自动顶起来了
3.在 a页面不给输入框焦点,直接进入b页面,然后返回a页面,一切正常
看完这三张图,相信你已经得出结论了,a页面的焦点就是问题所在。
怎么解决?
1.参考文章 https://blog.csdn.net/qq_33635385/article/details/102835927?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_utm_term%7ECtr-4-102835927-blog-131209569.235%5Ev43%5Epc_blog_bottom_relevance_base8&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_utm_term%7ECtr-4-102835927-blog-131209569.235%5Ev43%5Epc_blog_bottom_relevance_base8&utm_relevant_index=7
2.https://blog.csdn.net/qq_27981847/article/details/132151682
第一篇文章仅仅告诉你怎么转移焦点,具体怎么做没有继续说明。
第二篇文章和我们的需求和使用场景完全一样,解决方法也非常牛逼
因为我的使用场景是比较复杂,所以使用第二篇的第二种方法
唯一区别是使用的库改成 keyboard_utils_fork: ^1.0.1
其他的参考第二篇文章即可
2024-10-17,防止其他文章收费我直接贴出相关代码
解决:执行下一步之前,先调用
FocusManager.instance.primaryFocus?.unfocus();
如果想输入法收起,就直接失去焦点,需要引入库来监听输入法收起,如下图