useComplexPreferencesPersistedState<T extends Object, T2 extends Object> function
PersistedState<T>
useComplexPreferencesPersistedState<T extends Object, T2 extends Object>(
- String key, {
- required T2 toPreferences(
- T
- required T fromPreferences(
- T2
- T? defaultValue,
Implementation
PersistedState<T> useComplexPreferencesPersistedState<T extends Object, T2 extends Object>(
String key, {
required T2 Function(T) toPreferences,
required T Function(T2) fromPreferences,
T? defaultValue,
}) {
assert(
PreferencesService.supportedTypes.contains(T2),
"Type not supported, must be one of ${PreferencesService.supportedTypes}",
);
final preferencesService = useInjected<PreferencesService>();
final value = usePersistedState<T>(
() async => (await preferencesService.load<T2>(key))?.let(fromPreferences) ?? defaultValue,
(it) async => preferencesService.save(key, it?.let(toPreferences)),
);
return value;
}