build method

  1. @override
Future<PreferenceDetailState> build()
override

Initialize an AsyncNotifier.

It is safe to use Ref.watch or Ref.listen inside this method.

If a dependency of this AsyncNotifier (when using Ref.watch) changes, then build will be re-executed. On the other hand, the AsyncNotifier will not be recreated. Its instance will be preserved between executions of build.

If this method throws or returns a future that fails, the error will be caught and an AsyncError will be emitted.

Implementation

@override
Future<PreferenceDetailState> build() async {
  switch (_id) {
    case .language:
      final lifecycle = AppLifecycleListener(
        onResume: () {
          if (!_saving) _refresh();
        },
      );
      ref.onDispose(lifecycle.dispose);
    case .themeMode:
      ref.listen(preferencesProvider, (_, _) {
        if (!_saving) _refresh();
      });
  }

  return _readCurrent();
}