df/frontend/app/lib/model/services/storage_service.dart

85 lines
2.1 KiB
Dart

import 'package:flutter_secure_storage/flutter_secure_storage.dart';
class StorageItem {
StorageItem(this.key, this.value);
final String key;
final String value;
}
class StorageService {
final _secureStorage = const FlutterSecureStorage(
aOptions: AndroidOptions(
encryptedSharedPreferences: true,
),
);
Future<void> writeData(StorageItem item) async {
await _secureStorage.write(
key: item.key,
value: item.value,
);
}
Future<String?> readData(String key) async {
return await _secureStorage.read(key: key);
}
Future<List<StorageItem>> readAllSecureData() async {
var allData = await _secureStorage.readAll();
List<StorageItem> list =
allData.entries.map((e) => StorageItem(e.key, e.value)).toList();
return list;
}
Future<bool> containsData(String key) async {
return await _secureStorage.containsKey(key: key);
}
Future<void> deleteSecureData(StorageItem item) async {
await _secureStorage.delete(
key: item.key,
);
}
Future<void> deleteAllSecureData() async {
await _secureStorage.deleteAll();
}
Future<void> setNotificationSetting(bool enabled) async {
return await writeData(StorageItem('notifications', enabled ? '1' : '0'));
}
Future<bool> get notificationSetting async {
final enabled = await readData('notifications') == '1' ? true : false;
return enabled;
}
Future<int> get accountLevel async {
int? level;
final lev = await readData('account_level');
if (lev != null) {
level = int.tryParse(lev);
}
return level ?? 0;
}
Future<void> setAccountLevel(int level) async {
return await writeData(StorageItem('account_level', '$level'));
}
Future<void> initAccountLevel() async {
return await writeData(StorageItem('account_level', '0'));
}
Future<void> addAccountLevel() async {
int? level;
final l = await readData('account_level');
if (l != null) {
level = int.tryParse(l);
}
return await writeData(
StorageItem('account_level', '${level != null ? level + 1 : 1}'));
}
}