widgetを返したい時に使うもの?
どうもよく解らない、、
StateNotifierはstateと関数を保持するもの それをProvier するのが、StateNotifierProviderってのは理解できる。
で、FutureProvierって何者? StateNotifierの中で、Futureを返却するメソッドを作る事と何が違うんだ?
【Flutter】 Riverpod チートシート(書きかけ)
Flutter RiverpodのFutureProviderでAPI通信処理を楽に実装する | ZUMA Lab
ViewModel の代わりとして Riverpod の FutureProvider を利用できます。 また、FutureProvider は AsyncValue のオブジェクトを生成してくれます。
// AutoDisposeFutureProviderFamilyをつかったやつ final loginStateProvider = StateProvider((ref) => const LoginState()); final loginStateFutureProvider = FutureProvider.autoDispose .family<LoginState, AuthRequest>( (ref, authRequest) async { LoginState loginState = await Repository() .login(authRequest.name, authRequest.password) .onError((error, stackTrace) async { ref.watch(errorMessageProvider.notifier).state = "失敗だな"; throw Exception(error.toString()); }); ref.watch(loginStateProvider.notifier).state.copyWith( isSaseki: loginState.isSaseki, syokuinCode: loginState.syokuinCode, accessToken: loginState.accessToken, refreshToken: loginState.refreshToken, ); return loginState; } );
view側
child: messageProvider.when( data: (message) => ScheduleListHeader(scRes: message), error: (error, stackTrace) { Future(() { showDialog( context: context, builder: (_) { return AlertDialog( title: const Text("認証失敗、再ログインをお願いします。"), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: const Text("OK")), ], ); }).then((_) { Navigator.pop(context); }); }); }, loading: () => const AspectRatio( aspectRatio: 0.01, child: CircularProgressIndicator(), ), ),