Future的意义是什么? 在flutter中获取db async()

问题描述 投票:0回答:1

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

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

首先是在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;
  }
android database flutter
1个回答
0
投票

也许这个教程会更容易tutorial

无论如何Future得到db - 它不是字段,它只是getter所以,当你调用DBHelper.db时 - 如果它不为null则检查_db并返回带有_db字段的Future。

关于onCreate:_onCreate参数onCreate在openDatabase方法中需要2个参数(你可以看到这些参数来源)typedef FutureOr OnDatabaseCreateFn(Database db,int version)方法_onCreate需要相同的参数void _onCreate(Database db,int version)

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

我希望我已经回答了你的问题。写一些不清楚的东西

© www.soinside.com 2019 - 2024. All rights reserved.