load<T> method

Future<T> load<T>(
  1. String key, {
  2. T? defaultValue,
})

Implementation

Future<T> load<T>(String key, {T? defaultValue}) async {
  final preferences = await SharedPreferences.getInstance();
  final type = typeOf<T>();
  if (type == String) {
    final result = preferences.getString(key);
    Log.debug('simple storage result String $result for $key');
    return (result ?? defaultValue ?? '') as T;
  }
  if (type == int) {
    final result = preferences.getInt(key);
    Log.debug('simple storage result int $result for $key');
    return (result ?? defaultValue ?? 0) as T;
  }
  if (type == bool) {
    final result = preferences.getBool(key);
    Log.debug('simple storage result bool $result for $key');
    return (result ?? defaultValue ?? false) as T;
  }
  if (type == List) {
    final result = preferences.getStringList(key);
    Log.debug('simple storage result list $result for $key');
    return (result ?? defaultValue ?? <String>[]) as T;
  }
  if (type == double) {
    final result = preferences.getDouble(key);
    Log.debug('simple storage result double $result for $key');
    return (result ?? defaultValue ?? 0.0) as T;
  }
  final result = preferences.get(key);
  Log.debug('simple storage result dynamic $result for $key');
  return (result ?? defaultValue ?? Object()) as T;
}