我正在通过此链接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;
}
也许这个教程会更容易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 - 不带参数
我希望我已经回答了你的问题。写一些不清楚的东西