Flutter笔记应用所有笔记显示相同日期 日期无法动态更新问题求助
问题根源
- 你在新建笔记页面的顶层定义了全局变量
formattedDate,这个变量只会在Dart代码首次加载(也就是APP启动时)执行一次日期格式化逻辑,后续你每次打开新建笔记页面、保存笔记时,用的都是APP启动时缓存的这个日期值,不会动态更新。 - 你创建Note对象时把id写死为20,虽然数据库设置了id自增,但手动传固定id后续可能出现主键冲突报错,建议传null让数据库自动分配主键值。
修复方案
- 删除新建笔记页面顶层定义的
formattedDate全局变量,每次点击保存按钮时再实时生成当前日期 - 新建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
相关产品推荐
相关产品推荐

