flutter-freaccess-hub/lib/shared/extensions/flutter_secure_storage_exte...

44 lines
1.9 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]));
}