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

Flutter笔记应用所有笔记显示相同日期 日期无法动态更新问题求助

问题根源

  • 你在新建笔记页面的顶层定义了全局变量formattedDate,这个变量只会在Dart代码首次加载(也就是APP启动时)执行一次日期格式化逻辑,后续你每次打开新建笔记页面、保存笔记时,用的都是APP启动时缓存的这个日期值,不会动态更新。
  • 你创建Note对象时把id写死为20,虽然数据库设置了id自增,但手动传固定id后续可能出现主键冲突报错,建议传null让数据库自动分配主键值。

修复方案

  1. 删除新建笔记页面顶层定义的formattedDate全局变量,每次点击保存按钮时再实时生成当前日期
  2. 新建Note时id参数传入null,交由SQflite自动生成自增主键

修改后的保存按钮回调代码如下:

ActionsIconButton(
  icon: Icon(save, color: black),
  callBack: () async {
    String title = headerController.text;
    String body = bodyController.text;
    // 每次保存时实时获取当前时间格式化,保证日期是新建笔记的时间
    String formattedDate = DateFormat.yMMMd('en_US').format(DateTime.now());
    // id传null让数据库自动分配自增ID,避免主键冲突
    Note note = Note(null, title, body, formattedDate);
    var value = await dbHelper.insert(note);            
    Navigator.pop(context);
  },
)

额外注意

修改完成后,之前已经存入数据库的旧笔记日期还是错误的,你可以卸载重装APP清空旧数据,或者临时写个数据库更新逻辑批量修正旧笔记的日期,之后新创建的笔记就会正常显示对应创建时间了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:39:01