что означает Future <Database>get db async () в флаттере - PullRequest
0 голосов
/ 19 сентября 2018

Я следую учебному пособию по использованию базы данных Sqlite во флаттере по этой ссылке База данных SQFlite во флаттере

, но я запутался в некоторых частях этого руководства следующим образом:

первый, что означает получить дБ после будущего.Я не понимаю структуру функции также, когда эта функция будет выполняться?он не вызывает его в учебнике?

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 голосов
/ 19 сентября 2018

Может быть, этот учебник будет проще учебник

В любом случае Future<Database> get db - это не поле, а просто метод получения данных Итак, когда вы вызываете DBHelper.db - он проверяет _db, если этоне равно нулю и возвращает Future с полем _db.

Относительно onCreate: _onCreate параметра onCreate в openDatabase метод требует 2 параметра (вы можете увидеть это в источниках) typedef FutureOr OnDatabaseCreateFn(Database db, int version) метод _onCreate нужны те же параметры void _onCreate(Database db, int version)

В таких случаях вы можете написать onCreate: _onCreate - без параметров

Надеюсь, я ответил на ваши вопросы.Напишите, если что-то не понятно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...