57 lines
2.0 KiB
Dart
57 lines
2.0 KiB
Dart
import 'package:csv/csv.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
import 'package:synchronized/synchronized.dart';
|
|
|
|
extension FlutterSecureStorageExtensions on FlutterSecureStorage {
|
|
static final _lock = Lock();
|
|
|
|
Future<void> writeSync({required String key, String? value}) async =>
|
|
await _lock.synchronized(() async {
|
|
await write(key: key, value: value);
|
|
});
|
|
|
|
void remove(String key) => delete(key: key);
|
|
|
|
Future<String?> getString(String key) async => await read(key: key);
|
|
Future<void> setString(String key, String value) async =>
|
|
await writeSync(key: key, value: value);
|
|
|
|
Future<bool?> getBool(String key) async => (await read(key: key)) == 'true';
|
|
Future<void> setBool(String key, bool? value) async =>
|
|
await writeSync(key: key, value: value.toString());
|
|
|
|
Future<int?> getInt(String key) async =>
|
|
int.tryParse(await read(key: key) ?? '');
|
|
Future<void> setInt(String key, int value) async =>
|
|
await writeSync(key: key, value: value.toString());
|
|
|
|
Future<double?> getDouble(String key) async =>
|
|
double.tryParse(await read(key: key) ?? '');
|
|
Future<void> setDouble(String key, double value) async =>
|
|
await writeSync(key: key, value: value.toString());
|
|
|
|
Future<BuildContext?> getObject(String key) async {
|
|
final value = await read(key: key);
|
|
if (value == null || value.isEmpty) {
|
|
return null;
|
|
}
|
|
return value as BuildContext;
|
|
}
|
|
|
|
Future<List<String>?> getStringList(String key) async =>
|
|
await read(key: key).then((result) {
|
|
if (result == null || result.isEmpty) {
|
|
return null;
|
|
}
|
|
return const CsvToListConverter()
|
|
.convert(result)
|
|
.first
|
|
.map((e) => e.toString())
|
|
.toList();
|
|
});
|
|
Future<void> setStringList(String key, List<String> value) async =>
|
|
await writeSync(
|
|
key: key, value: const ListToCsvConverter().convert([value]));
|
|
}
|