Не удалось создать базу данных с помощью плагина sqflite_common_ffi для рабочего стола flutter

#database #flutter #dart

Вопрос:

Я хочу создать базу данных для настольного приложения flutter. Я использую плагин sqflite_common_ffi для этой цели, но проблема в том, что он не позволяет мне создавать базу данных и выдает некоторую ошибку при вызове метода onCreate.

  // this opens the database (and creates it if it doesn't exist)
  _initDatabase() async {
    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, _databaseName);
    var databaseFactory = databaseFactoryFfi;
    print('DATABASE PATH: $path');
    Database db = await databaseFactory.openDatabase(
      path,
      options: OpenDatabaseOptions(
        version: 1,
        onCreate: (Database db, int version) async {
          await db.execute('''
          CREATE TABLE $table (
            $columnId INTEGER PRIMARY KEY,
            $columnName TEXT NOT NULL,
             $columnType TEXT NOT NULL,
               $columnStatus TEXT NOT NULL,
            $columnFlag INTEGER NOT NULL
          )
          ''');
          print('TABLE CREATED');
        },
      ),
    );
    print('DATABASE CREATED');

    return db;
  } 

Это мой код для создания базы данных. Когда я запускаю приложение, оно выдает следующую ошибку:

Изображение

Кто-нибудь, пожалуйста, помогите мне. Спасибо

Ответ №1:

Вы проверили эти шаги:

https://pub.dev/packages/sqflite_common_ffi#windows

Должен работать как есть в режиме отладки (sqlite3.dll поставляется в комплекте).

В режиме выпуска добавьте sqlite3.dll в той же папке, что и ваш исполняемый файл.

sqfliteFfiInit предоставляется в качестве ссылки на реализацию для загрузки библиотеки sqlite. Пожалуйста, посмотрите на sqlite3, если вы хотите переопределить это поведение.

Комментарии:

1. Да, мне не хватало этой однострочной команды sqfliteFfiInit(); в основном методе. Спасибо, теперь все исправлено

2. Спасибо, что приняли ответ. Поднимите голос, если сможете 🙂