init method
dynamic
init(})
打开一个数据库
dbName 数据库名称
version 数据库版本
onCreate 数据库创建时执行的逻辑
onUpgrade 数据库升级时执行的逻辑
Implementation
init(String dbName, int version,
{OnDatabaseCreateFn? onCreate,
OnDatabaseVersionChangeFn? onUpgrade}) async {
print('_openDatabase');
// getDatabasesPath 即 Android 上的默认数据库目录和 iOS/MacOS 上的文档目录
var databasesPath = await getDatabasesPath().catchError((e) {
print('getDatabasesPath catchError: $e');
return "";
}).whenComplete(() {
print('getDatabasesPath whenComplete');
}).timeout(const Duration(seconds: 10), onTimeout: () {
print('getDatabasesPath timeout');
return "";
});
if (databasesPath == "") {
print('getDatabasesPath ERROR!!!');
return;
}
String path = "$databasesPath/$dbName.db";
// 打开数据库
await openDatabase(
path,
version: version,
onCreate: onCreate,
onUpgrade: onUpgrade,
).then((value) {
_db = value;
}).catchError((e) {
print('openDatabase catchError: $e');
}).whenComplete(() {
print('openDatabase whenComplete');
}).timeout(const Duration(seconds: 10), onTimeout: () {
print('openDatabase timeout');
});
}