Flutter Sqlite几个小点记录

上一篇讲的是swift,这一篇我就来回忆一下我之前的flutter项目.

社交类型的项目,自然是离不开聊天,涉及到聊天,自然少不了数据库存储等操作,flutter数据库也是比较成熟的,比如对象型objectbox,realm,又比如sqlite,我在flutter项目中考察了很久,最终决定使用的还是sqlite3.争议来争议去,发现,其实sqlite用起来还是十分的顺手的.

写博客这方面, 我个人对老老实实一点点地去写技术流程确实没啥耐心,因为整篇的技术文,大部分的文字都比较水,其实重要的点也就那么一两个,所以本篇,我就当一个回忆问,挑几个我当时印象比较深的,读者可能会碰到的一些问题来讲好了

数据库操作

db的创建流程也没啥好说的 其实在数据库操作这块,没啥好说的,也就是表升级的时候麻烦,不过sqlite这块的升表操作,我很早以前也过一篇blog. 不过如果你本身对数据库字段改动不大的话,sqlite就已经十分足够用的.

表操作

表的操作也没啥好说的,flutter是单线程的操作,基本不会有并发的资源抢夺发生.但是sqlite有一些要注意. 我这里提一个点,就是事务. 举例一个场景,聊天业务,当你回复某个陌生人的一条消息,你需要做的操作有:

  1. 写入本身的这条消息
  2. 将这个陌生人的会话移出陌生人列表
  3. 消息列表的陌生人未读数总计需要减少
  4. tab上的总未读数要减少
  5. 这个陌生人在消息列表中的数据要按时间顺序排到第一

如果中间出了什么问题,需要将整体的事务回滚. 这里如果滥用事务的话,可能会抛异常 "在事务中开启事务等等什么的", 异常一下子没找到,就这样理解算了,这个方式,我个人的解决办法就是,在顶层的api中,调用数据库操作,执行txn,然后在后续所有的业务逻辑操作中,统一使用该事务对象,这样就可以解决了.比如这样

中间的任何数据库操作逻辑,都传递该事务进行即可.

字段设计

我将表的每个字段都单独建立成常量属性,这样在做sql语句的操作的时候,就完全不会有写错字段的问题出现. 需要注意的是,不要把参数直接拼接到语句中,建议是使用whereArgs来操作,如果你用占位语句,string类型会出问题的.

sqlite的一个小优点

在聊天场景中,对会话字段的更新非常的好写,比如获取未读总数等等.

结尾

本篇文章确实也没啥营养,主要是我个人的回忆记录,读者看个乐即可,也别太当个技术文.顺便吐槽下,现在人越来越浮躁了,愿意静下心来写文章分享的人越来越少了. swiftui的文章写的人也特别少,一不小心就点到cs&&&dn里去,然后这货全是付费文章,真是无语,我个人虽然不排斥知识付费,但是你丫的什么blog都付费,要不要点脸,能不能屏蔽掉这个网站啊囧.

相关推荐
国医中兴9 小时前
Flutter 三方库 stack_blur 鸿蒙适配指南 - 实现工业级高性能模糊滤镜、在 OpenHarmony 上打造极致视觉质感实战
flutter·华为·harmonyos
Justin在掘金10 小时前
Flutter Provider 状态管理深度指南
flutter
JMchen12314 小时前
跨技术栈:在Flutter/Compose中应用自定义View思想
java·经验分享·flutter·canvas·dart·自定义view
国医中兴17 小时前
Flutter 三方库 ngrouter 鸿蒙适配指南 - 实现高性能扁平化路由导航管理实战
flutter·harmonyos·鸿蒙·openharmony
lpftobetheone17 小时前
【Flutter】如何理解Dart语言的Isolate API
flutter
国医中兴18 小时前
Flutter 三方库 inject_generator 的鸿蒙化适配指南 - 自动化依赖注入注入生成器、驱动鸿蒙大型工程解耦实战
flutter·harmonyos·鸿蒙·openharmony·inject_generator
chdo18 小时前
从需求到实现:Flutter可变宽度滑动器的探索之路
flutter
国医中兴19 小时前
Flutter 三方库 themed_color_palette 的鸿蒙化适配指南 - 定义语义化调色板、在鸿蒙端实现像素级的主题切换实战
flutter·harmonyos·鸿蒙·openharmony·themed_color_palette
不爱吃糖的程序媛19 小时前
2026 年如何上车 Flutter-OH:环境搭建与上手流程
flutter