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

Flutter中Duplicate GlobalKey错误:颜色按钮崩溃+数据库数据不显示

Flutter待办APP问题解决方案

先处理核心错误:「Duplicate GlobalKey detected in widget tree」

这个错误是Flutter的致命性错误,直接导致页面状态混乱、崩溃和数据展示异常,必须优先解决:

  • 全局检查所有使用GlobalKey的代码,不管是Form、Scaffold还是自定义组件的key,确保每个GlobalKey在widget树中唯一:
    • 比如在add_task_page.dart或homepagepass.dart中,如果把GlobalKey定义为类的静态变量或者固定实例,改成在State类的initState方法中初始化,或者用UniqueKey()替代(如果不需要通过key获取组件状态的话)
    • 示例修正:把final _formKey = GlobalKey<FormState>();从类的成员变量移到对应的State类内部,确保每次页面实例化时生成新的key
  • 排查页面跳转逻辑,比如从首页打开新增任务页时,是否重复传入了同一个GlobalKey实例,改成每次跳转都创建新的key对象

解决颜色按钮点击崩溃问题

修复GlobalKey重复问题后,大概率能解决这个崩溃。如果还有问题:

  • 检查颜色按钮的点击事件代码,看是否存在访问空对象、未初始化变量的情况,比如颜色选择器的状态变量是否为null就被调用
  • 确认点击事件中修改状态时是否正确调用了setState(),确保UI能正确响应状态变化

解决首页无法展示数据库数据问题

先修复GlobalKey错误,再排查以下点:

  • 检查task_controller.dart中的数据获取逻辑,确认调用数据库查询后,是否调用了notifyListeners()(如果用了ChangeNotifier),确保UI能收到数据更新通知
  • 查看homepagepass.dart的UI代码,是否用了FutureBuilder或者Consumer来处理异步数据加载,避免在页面初始化时直接同步调用数据库查询
  • 在db_make.dart的查询方法中添加打印日志,确认数据库返回的数据集是否正确,排除数据库查询本身的问题

内容的提问来源于stack exchange,提问作者a k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:32:35