🙆‍♀️

FlutterのMoorで 〜MyDatabase multiple times.〜とWARNINGが出たときの対応方法

2021/09/23に公開

FlutterのMoorで以下のWARNINGが出ました

flutter: WARNING (moor): It looks like you've created the database class MyDatabase multiple times. When these two databases use the same QueryExecutor, race conditions will occur and might corrupt the database. 
Try to follow the advice at https://moor.simonbinder.eu/faq/#using-the-database or, if you know what you're doing, set moorRuntimeOptions.dontWarnAboutMultipleDatabases = true

データベースのクラスがシングルトンで生成しない時に出るWARNINGです。
シングルトンで生成できない場合、
対応方法は上記ログに記載があるのですが、どこに書くの??となったため、解決ログとして残します。
Moorの_openConnectionのメソッドの中に記載するです。
僕の例です。

LazyDatabase _openConnection() {
  // the LazyDatabase util lets us find the right location for the file async.
  return LazyDatabase(() async {
    // put the database file, called db.sqlite here, into the documents folder
    // for your app.
    final dbFolder = await getApplicationDocumentsDirectory();
    final file = File(p.join(dbFolder.path, 'db.sqlite'));
    moorRuntimeOptions.dontWarnAboutMultipleDatabases = true;
    return VmDatabase(file);
  });
}

Discussion