setValue<T> static method
Implementation
static Future<bool> setValue<T>(PreferenceItem<T> item, T? value) async {
final String key = getPrefKey(item);
final isNullable = checkIsNullable<T>();
if (isNullable && value == null) {
//null을 세팅한다는 것은 값을 지운다는 의미로 해석. 필요에 따라 변경해서 쓰시면 되요.
return _prefs.remove(item.key);
}
if (isNullable) {
switch (T.toString()) {
case "int?":
return _prefs.setInt(key, value as int);
case "String?":
return _prefs.setString(key, value as String);
case "double?":
return _prefs.setDouble(key, value as double);
case "bool?":
return _prefs.setBool(key, value as bool);
case "List<String>?":
return _prefs.setStringList(key, value as List<String>);
case "DateTime?":
return _prefs.setString(key, (value as DateTime).toIso8601String());
default:
if (value is Enum) {
return _prefs.setString(key, describeEnum(value));
} else {
throw Exception('$T 타입에 대한 저장 transform 함수를 추가 해주세요.');
}
}
} else {
switch (T) {
case int:
return _prefs.setInt(key, value as int);
case String:
return _prefs.setString(key, value as String);
case double:
return _prefs.setDouble(key, value as double);
case bool:
return _prefs.setBool(key, value as bool);
case const (List<String>):
return _prefs.setStringList(key, value as List<String>);
case DateTime:
return _prefs.setString(key, (value as DateTime).toIso8601String());
default:
if (value is Enum) {
return _prefs.setString(key, describeEnum(value));
} else {
throw Exception('$T 타입에 대한 저장 transform 함수를 추가 해주세요.');
}
}
}
}