useComplexPreferencesPersistedState<T extends Object, T2 extends Object> function

PersistedState<T> useComplexPreferencesPersistedState<T extends Object, T2 extends Object>(
  1. String key, {
  2. required T2 toPreferences(
    1. T
    ),
  3. required T fromPreferences(
    1. T2
    ),
  4. 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;
}