Skip to content

Instantly share code, notes, and snippets.

@apgapg
Created January 7, 2020 06:02
Show Gist options
  • Save apgapg/96bdf02c59715e037eda58c5fc040be4 to your computer and use it in GitHub Desktop.
Save apgapg/96bdf02c59715e037eda58c5fc040be4 to your computer and use it in GitHub Desktop.
Base class for using shared/local preferences in Flutter
abstract class BasePrefs {
Future<void> initialise();
//Getters
bool getBool(String key);
int getInt(String key);
double getDouble(String key);
String getString(String key);
List<String> getStringList(String key);
//Setters
void setBool(String key, bool value);
void setInt(String key, int value);
void setDouble(String key, double value);
void setString(String key, String value);
void setStringList(String key, List<String> value);
//MISC
Future<void> reload();
void remove(String key);
void clear();
}
import 'package:localstorage/localstorage.dart';
import 'package:workozy_app/data/local/prefs/base_prefs.dart';
class JsonPrefs extends BasePrefs {
final _storage = LocalStorage('workozy_prefs');
@override
Future<void> initialise() async {
print("Initialising Json Prefs...");
var result = await _storage.ready;
if (result != true) {
throw Exception("Error in initialising json_prefs");
}
}
@override
bool getBool(String key) {
return _storage.getItem(key) as bool;
}
@override
double getDouble(String key) {
return _storage.getItem(key) as double;
}
@override
int getInt(String key) {
return _storage.getItem(key) as int;
}
@override
String getString(String key) {
return _storage.getItem(key) as String;
}
@override
List<String> getStringList(String key) {
return ((_storage.getItem(key) as List) ?? []).cast<String>();
}
@override
void clear() {
_storage.clear();
}
@override
Future<void> reload() async {
// TODO: implement reload
}
@override
void remove(String key) {
_storage.deleteItem(key);
}
@override
void setBool(String key, bool value) {
_storage.setItem(key, value);
}
@override
void setDouble(String key, double value) {
_storage.setItem(key, value);
}
@override
void setInt(String key, int value) {
_storage.setItem(key, value);
}
@override
void setString(String key, String value) {
_storage.setItem(key, value);
}
@override
void setStringList(String key, List<String> value) {
_storage.setItem(key, value);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment