init method

dynamic init(
  1. String dbName,
  2. int version, {
  3. OnDatabaseCreateFn? onCreate,
  4. OnDatabaseVersionChangeFn? onUpgrade,
})

打开一个数据库 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');
  });
}