Проблема с базой данных SQLite OnePlus 5 при использовании Flutter - база данных (иногда) не удаляется с приложением - PullRequest
1 голос
/ 22 января 2020

Я создал приложение, используя плагин SQFlite для Flutter. Все отлично работает на iOS и большинстве Android телефонов, но у меня есть один тестер, который испытывает очень странное поведение на своем устройстве OnePlus, в частности, OnePlus 5 с OxygenOS 9.0.1). Очевидно, база данных осталась после удаления приложения (будет загружать старые данные), затем она «иногда сохраняет, а иногда нет».

Ниже приведен код, который я использовал для создания базы данных:

  _initDatabase() async {
    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, _databaseName);
    return await openDatabase(path,
        version: _databaseVersion, onCreate: _onCreate);
  }

Это метод _onCreate ():

  Future _onCreate(Database db, int version) async {
    await db.transaction((txn) async {
      await txn.execute('''
              CREATE TABLE $tableCharacters (
                $columnCharacterId INTEGER PRIMARY KEY,
                $columnCharacterName TEXT NOT NULL
              )''');
      await txn.execute('''
              CREATE TABLE $tablePerks (
                $columnPerkId INTEGER PRIMARY KEY,
                $columnPerkClass TEXT NOT NULL,
                $columnPerkDetails TEXT NOT NULL
              )''').then((_) async {
        for (Perk perk in perkList) {
          for (int i = 0; i < perk.numOfPerks; i++) {
            int id = await txn.insert(tablePerks, perk.toMap());
            print("ID: " +
                id.toString() +
                " : " +
                perk.perkClassCode +
                " : " +
                perk.perkDetails);
          }
        }
      });
      await txn.execute('''
              CREATE TABLE $tableCharacterPerks (
                $columnAssociatedCharacterId INTEGER,
                $columnAssociatedPerkId INTEGER,
                $columnCharacterPerkIsSelected BOOLEAN
              )''');
    });
  }

Мой вопрос: есть ли что-то не так с этим методом, который может решить мою проблему с Устройства OnePlus? Могу ли я что-то сделать, чтобы обеспечить правильную установку на этих телефонах? У меня более 6 тысяч активных пользователей, поэтому я определенно хочу, чтобы этот релиз был герметичным.

Спасибо.

...