I/flutter ( 9532): 创建数据库时绑定尚未初始化

Abd*_*tab 3 async-await flutter sqflite

我正在构建一个带有sqflite数据库的应用程序,当我运行我的应用程序时,我收到此错误:

I/flutter ( 9532): eeeeeeeee 绑定尚未初始化。I/flutter (9532):ServicesBinding 绑定 mixin 上的“实例”getter 仅在绑定初始化后才可用。I/flutter (9532):通常,这是通过调用“WidgetsFlutterBinding.ensureInitialized()”或“runApp()”(后者调用前者)来完成的。通常,此调用是在“void main()”方法中完成的。“ensureInitialized”方法是幂等的;多次调用它并没有什么害处。调用该方法后,“实例”getter 将返回绑定。I/flutter ( 9532):在测试中,可以调用“TestWidgetsFlutterBinding.ensureInitialized()”作为测试的“main()”方法中的第一行来初始化绑定。I/flutter ( 9532):如果 ServicesBinding 是自定义绑定 mixin,则还必须有一个自定义绑定类,例如 WidgetsFlutterBinding,但它混合在所选绑定中,并且这是在使用“实例”之前必须构造的类吸气剂。nnnnnnnnnnnn

这是我的main()

void main() async {
  WidgetsFlutterBinding.ensureInitialized;
  await DBHelper().initDb();
  runApp(const MyApp());
}
Run Code Online (Sandbox Code Playgroud)

这是initDB()

  initDb() async {
    try {
      String databasePath = await getDatabasesPath(); //The break point stops here and show me the error above.

      String path = join(databasePath, 'task.db');

      Database ourdb = await openDatabase(path,
          onCreate: _onCreate, version: _version, onUpgrade: _onUpgrade);

      return ourdb;
    } catch (e) {
      print('eeeeeeeee $e nnnnnnnnnnnn');
    }
  }
Run Code Online (Sandbox Code Playgroud)

那么出了什么问题呢?

mko*_*lys 5

WidgetsFlutterBinding.ensureInitialized只是一个语句 - 你应该执行该函数。

WidgetsFlutterBinding.ensureInitialized用。。。来代替WidgetsFlutterBinding.ensureInitialized()