Я создал приложение, используя плагин 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 тысяч активных пользователей, поэтому я определенно хочу, чтобы этот релиз был герметичным.
Спасибо.