Flutter TextField onTapOutside问题:失焦后无法重新获取焦点
解决TextField点击外部失焦后无法重新获取焦点的问题
问题原因
你当前代码里用Builder的context调用FocusScope.of(context).unfocus(),会移除该context对应FocusScope内的所有焦点,同时干扰了TextField重新获取焦点的逻辑。
修正方案
去掉多余的Builder,改用FocusManager处理焦点失焦操作,只会针对当前主焦点进行处理,不会影响TextField后续获取焦点。
修正后的完整代码
Scaffold( appBar: AppBar(title: const Text('Example')), body: SizedBox( width: 100, height: 40, child: TextField( onTapOutside: (event) { FocusManager.instance.primaryFocus?.unfocus(); }, ), ), )
说明
FocusManager.instance.primaryFocus会获取当前界面中拥有焦点的控件,调用unfocus()只会让这个控件失焦,不会破坏其他焦点逻辑。- 原代码里的
Builder已经没有存在必要,直接移除即可简化结构。
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

