You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:27:04