我正在通过此链接关注有关在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;
}
答案 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-不带参数
我希望我已经回答了你的问题。写不清楚的话