扑扑未来<database> get db async()是什么意思

时间:2018-09-19 08:56:45

标签: android database flutter

我正在通过此链接关注有关在flutter中使用Sqlite数据库的教程 SQFlite Database in flutter

但是我对本教程的某些部分感到困惑,如下所示:

首先Future之后get db的含义是什么。我还不了解函数的结构,何时执行该函数?他没有在教程中称呼它吗?

Future<Database> get db async {
    if(_db != null)
      return _db;
    _db = await initDb();
    return _db;
  }

此功能的秒   他调用了方法_onCreate,但未传递任何参数 为什么以及这意味着什么?

initDb() async {
    io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "test.db");
    var theDb = await openDatabase(path, version: 1, onCreate: _onCreate);
    return theDb;
  }

1 个答案:

答案 0 :(得分:0)

也许本教程会更容易 tutorial

无论如何 未来获取数据库-它不是字段,只是吸气剂 因此,当您调用DBHelper.db时-它会检查_db是否为null并返回带有_db字段的Future。

关于onCreate:_onCreate openDatabase方法中的参数onCreate需要2个参数(您可以在源代码中看到它) typedef FutureOr OnDatabaseCreateFn(数据库db,int版本) 方法_onCreate需要相同的参数 void _onCreate(数据库db,int版本)

在这种情况下,您可以编写onCreate:_onCreate-不带参数

我希望我已经回答了你的问题。写不清楚的话