set method
Sets the value of the Pod to newValue and calls notifyListeners
if the value is different from the current value.
No-op on a disposed pod (the value field is not mutated).
Implementation
@override
Future<void> set(A newValue, {bool notifyImmediately = true}) {
return _enqueue(() async {
final v = toValue(newValue);
_sharedPreferences ??= await _getPrefs();
switch (v) {
case final String s:
await _sharedPreferences!.setString(key, s);
case final bool b:
await _sharedPreferences!.setBool(key, b);
case final int i:
await _sharedPreferences!.setInt(key, i);
case final double d:
await _sharedPreferences!.setDouble(key, d);
case final Iterable<String> list:
await _sharedPreferences!.setStringList(key, list.toList());
default:
throw Err(
'SharedPod only supports storing String, int, bool, double, and Iterable<String>. '
'The provided value type is ${v.runtimeType}.',
);
}
_set(newValue, notifyImmediately: notifyImmediately);
});
}