85 lines
2.1 KiB
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}'));
|
|
}
|
|
}
|