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

Flutter中NotifyListeners不生效,新增SQFlite数据后TextField未更新问题

问题根因

你的代码确实存在数据同步逻辑缺失的问题:

  • 界面展示的数值来源于BmiListViewModel中存储的bmiVm列表,该列表仅在调用readAllBmi方法时才会从数据库拉取最新数据更新
  • 你当前的addNewBmi方法仅完成了数据库写入操作,没有主动触发readAllBmi更新本地列表,仅调用notifyListeners()只能通知界面重绘,但数据源没有变化,所以界面不会更新
  • 重启应用后ViewModel会重新初始化,自动拉取全量数据,此时才能读到新写入的内容
修复方案

修改BmiListViewModel中的addNewBmi方法,写入数据库完成后调用readAllBmi拉取最新数据即可:

addNewBmi(Bmi bmi) async {
  log(bmi.value);
  await DbHelper.instance.create(bmi);
  // 新增该行代码,拉取最新数据更新列表并触发界面刷新
  await readAllBmi();
}

注:readAllBmi方法内部已经实现了bmiVm列表更新和notifyListeners()调用逻辑,不需要额外写其他代码,修改完成后点击添加按钮即可同步刷新界面展示的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:03