前言
前面一篇我们介绍了使用 shared_preferences
实现简单的键值对存储,然而我们还会面临更为复杂的本地存储。比如资讯类 App会缓存一部分上次加载的内容,在没有网络的情况下也能够提供内容;比如微信的聊天记录都是存储在手机客户端。当我们需要在本地存储大量结构化的数据的时候,使用 shared_preferences
显然是不够的。这个时候我们就需要使用本地数据库,移动端最为常用的本地数据库是 SQLite。在 Flutter中同样提供了对 SQLite 的支持,我们可以使用 sqflite
这个插件搞定结构化数据的本地存储。本篇我们以一个完整的备忘录的实例来讲述如何使用 sqflite
。
业务需求解读
我们先来看备忘录的功能:
- 显示已经记录的备忘录列表,按更新时间倒序排序;
- 按标题或内容搜索备忘录;
- 添加备忘录,并保存在本地;
- 编辑备忘录,成功后更新原有备忘录;
- 删除备忘录;
- 备忘录通常包括标题、内容、创建时间和更新时间这些属性。
可以看到,这其实是一个典型的数据表的 CRUD 操作。
实体类设计
我们设计一个 Memo