getObject<T> method

T getObject<T>(
  1. String key, {
  2. required T defaultValue,
})

Implementation

T getObject<T>(String key, {required T defaultValue}) {
  if (T == String) {
    return getString(key, defaultValue: defaultValue as String) as T;
  } else if (T == bool) {
    return getBoolean(key, defaultValue: defaultValue as bool) as T;
  } else if (T == int) {
    return getInt(key, defaultValue: defaultValue as int) as T;
  } else if (T == double) {
    return getDouble(key, defaultValue: defaultValue as double) as T;
  } else if (T == List<String>) {
    return getStringList(key, defaultValue: defaultValue as List<String>)
        as T;
  } else {
    // Try to deserialize from JSON
    final jsonStr = getString(key, defaultValue: '');
    if (jsonStr.isEmpty) return defaultValue;

    try {
      final decoded = jsonDecode(jsonStr);
      return decoded as T? ?? defaultValue;
    } catch (e) {
      debugPrint('Cannot deserialize object of type $T');
      return defaultValue;
    }
  }
}