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

Flutter TextField点击后键盘弹出1秒即消失问题求助

Flutter TextField键盘弹出后立即收回的解决方案

你的代码存在两个核心问题,直接导致了键盘弹出后迅速收回的现象:

  • Get.put(SignUpController())写在build方法内部,每次Widget重建时都会重新注入新的控制器实例,触发Widget树重构,让TextField失去焦点,键盘随之收起。
  • GlobalKey<FormState> _formkey同样定义在build方法内,每次build都会生成新的Key,Form状态被强制重置,间接引发焦点丢失。

修复步骤:

  1. 将控制器初始化移至build方法外
    根据Widget类型选择合适的初始化方式,避免每次build都重新注入控制器:

    • 若为StatefulWidget:
      class SignUpPage extends StatefulWidget {
        const SignUpPage({super.key});
      
        @override
        State<SignUpPage> createState() => _SignUpPageState();
      }
      
      class _SignUpPageState extends State<SignUpPage> {
        late final SignUpController controller;
        final _formkey = GlobalKey<FormState>();
      
        @override
        void initState() {
          super.initState();
          controller = Get.put(SignUpController());
        }
      
        @override
        Widget build(BuildContext context) {
          return Container(
            padding: const EdgeInsets.symmetric(vertical: tFormHeight - 10),
            child: Form(
              key: _formkey,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  // 原有的TextFormField及按钮代码...
                ],
              ),
            ),
          );
        }
      }
      
    • 若为StatelessWidget:
      class SignUpPage extends StatelessWidget {
        SignUpPage({super.key});
      
        final controller = Get.put(SignUpController());
        final _formkey = GlobalKey<FormState>();
      
        @override
        Widget build(BuildContext context) {
          // 原有的build内容...
        }
      }
      
  2. 固定GlobalKey的声明位置
    将_formkey作为Widget类的成员变量,确保整个Widget生命周期内Key唯一,不会因build触发而重置Form状态。

  3. 排查额外重建触发点

    • 检查父Widget是否存在不必要的setState调用,导致当前Widget频繁重构。
    • 确认SignUpController中是否有意外触发的update()方法,引发依赖该控制器的Widget强制刷新。

内容的提问来源于stack exchange,提问作者HELL unknown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:48:26