1分钟
14 数据库
在 GSYGithubAppFlutter 中,数据库使用的是 sqflite 的封装,其实就是 sqlite 语法的使用而已,有兴趣的可以看看完整代码 DemoDb.dart 。 这里主要提供一种思路,按照 sqflite 文档提供的方法,重新做了一小些修改,通过定义 Provider 操作数据库:
- 在 Provider 中定义表名与数据库字段常量,用于创建表与字段操作;
- 提供数据库与数据实体之间的映射,比如数据库对象与User对象之间的转化;
- 在调用 Provider 时才先判断表是否创建,然后再返回数据库对象进行用户查询。
如果结合网络请求,通过闭包实现,在需要数据库时先返回数据库,然后通过 next
方法将网络请求的方法返回,最后外部可以通过调用next
方法再执行网络请求。如下所示:
UserDao.getUserInfo(userName, needDb: true).then((res) {
///数据库结果
if (res != null && res.result) {
setState(() {
userInfo = res.data;
});
}
return res.next;
}).then((res) {
///网络结果
if (res != null && res.result) {
setState(() {
userInfo = res.data;
});
}
});
学员评价