【发布时间】:2022-01-18 00:21:24
【问题描述】:
我一直在努力建立一个使用 sqflite 的 sqlite 数据库。每次我调用数据库的 getter 方法时,代码都会生成一个新的数据库实例。代码如下:
class DatabaseProvider {
DatabaseProvider._();
static final DatabaseProvider dbProvider = DatabaseProvider._();
static Database? _database;
Future<Database> get database async => _database ??= await _createDatabase();
}
...
【问题讨论】:
-
_createDatabase()在你的代码中做了什么?它会初始化_database吗? -
是的,它正在使用
await openDatabase()打开数据库并返回Future<Database> -
那么,您是否将返回的对象设置为
_database?,例如:_database = await openDatabase()? -
我没有将返回的对象设置为
_database,因为_database已分配给_createDatabase(),并且该函数正在返回Database对象。我试图将getter方法更改为if (_database != null) return _database!和_database = await _createDatabase()。但还是一样。每次我尝试插入数据库时,我都会得到一个只有一个条目的新数据库实例。 -
怎么样:
Future<Database> get database async { if (_database == null) { _database = await _createDatabase(); } return _database; }?
标签: flutter sqlite dart sqflite dart-null-safety