无法在抖动中初始化sqlite

0ve6wy6x  于 2023-05-07  发布在  SQLite
关注(0)|答案(1)|浏览(202)

我在flutter中尝试init mysql db文件。我使用这个代码:

static Future<void> initdb() async {
    final databasePath = await getDatabasesPath();
    final path = join(databasePath, 'models.db');
    _database = await openDatabase(path, version: 1, onCreate: (db, version) {
      return db.execute(
        'CREATE TABLE models(id INTEGER PRIMARY KEY, barcode TEXT, type TEXT, brand TEXT, color TEXT, gender TEXT, price REAL, total INTEGER)',
      );
    });
  }

依赖关系:

dependencies:
  flutter_svg: 2.0.4
  sqflite: 2.2.8
  path_provider: 2.0.14
  flutter:
    sdk: flutter

在main.dart中:

void main() async{
  await ModelDatabase.initdb();
  runApp(MyApp());
}

我得到这个错误:

Error: Bad state: databaseFactory not initialized

同样的错误与官方文档中的示例flutter https://docs.flutter.dev/cookbook/persistence/sqlite中的示例相同
我试着运行flutter clean并重新验证缓存。也不管用。我正在使用Android Studio 2022.1.1

dsekswqp

dsekswqp1#

我已经不记得这是在哪里记录的了,但通常你应该在调用runApp之前使用任何插件API之前添加WidgetsFlutterBinding.ensureInitialized();

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ModelDatabase.initdb();
  ...

参见What Does WidgetsFlutterBinding.ensureInitialized() do?

相关问题