I can’t seem to get my head around the correct use of AsyncNotifierProvider.
Below code is not working right rn.
I have multiple AsyncNotifierProvider(lastTrialProvider & PendingProvider). How can I combine them and use(similar to Future.wait) single AsyncNotifierProvider(independentCardProvider).
Also, how do I call the independentCardProvider getCards method when my widget loads?
class IndependentCardListState extends ConsumerState<IndependentCardList> {
@override
Widget build(BuildContext context) { final viewModel = ref.watch(independentCardProvider); }
}
final independentCardProvider =
AsyncNotifierProvider<IndependentCardProvider, List<EventModel>>(
IndependentCardProvider.new);
class IndependentCardProvider extends AsyncNotifier<List<EventModel>> {
IndependentCardProvider() : super() {
getCards();
}
getCards() async {
var pending = await ref.watch(pendingProvider);
var last = await ref.watch(lastTrialProvider);
// business logic here
var sectionModel = EventModel();
sectionModel.title = 'add';
sectionModel.subTitle = 'add_to_schedule';
state = AsyncValue.data([sectionModel]);
}
@override
List<EventModel> build() {
return [];
}
}
final pendingProvider =
AsyncNotifierProvider<PendingProvider, List<Base>>(
PendingProvider.new);
class PendingProvider extends AsyncNotifier<List<Base>> {
final Repository repository = Repository();
@override
FutureOr<List<Base>> build() {
return [];
}
getPending() async {
state = await AsyncValue.guard(() async {
FutureOr<List<Base>> trial = repository.getPending();
return trial;
});
}
}
final lastTrialProvider =
AsyncNotifierProvider<LastTrialProvider, Trial?>(
LastTrialProvider.new);
class LastTrialProvider extends AsyncNotifier<Trial?> {
final Repository repository = Repository();
@override
FutureOr<Trial?> build() {
return null;
}
}