getData<T> static method

Future<T> getData<T>(
  1. String key
)

Implementation

static Future<T> getData<T>(String key) async {
  final prefs = await SharedPreferences.getInstance();
  if (T == int) {
    // Get an integer value to 'counter' key.
    T value = ((prefs.getInt(key)) ?? 0) as T;
    return value;
  } else if (T == bool) {
    // Get an boolean value to 'repeat' key.
    T value = ((prefs.getBool(key)) ?? false) as T;
    return value;
  } else if (T == double) {
    // Get an double value to 'decimal' key.
    T value = ((prefs.getDouble(key)) ?? 0.0) as T;
    return value;
  } else if (T == List<String>) {
    // Get an list of strings to 'items' key.
    T value = ((prefs.getStringList(key)) ?? <String>[]) as T;
    return value;
  } else if (T == Map<String, dynamic>) {
    String jsonString = (prefs.getString(key)) ?? "{}";
    T value = (jsonDecode(jsonString) as Map<String, dynamic>) as T;

    return value;
  } else if (T == List<dynamic>) {
    String jsonString = (prefs.getString(key)) ?? "[]";

    final List<dynamic> jsonList = jsonDecode(jsonString);
    return jsonList.map((item) => item as Map<String, dynamic>).toList() as T;
  } else {
    //default String
    // Get an double value to 'decimal' key.
    T value = ((prefs.getString(key)) ?? "") as T;
    return value;
  }
}