Reputation: 1600
I'm having a problem defining a Riverpod n auto-dispose family Async provider. Note: I'm not usng code generation.
enum GoalListFilterSource {
list,
select,
scheduling
}
class GoalListPageParameter extends Equatable {
final int pageNumber;
final GoalListFilterSource filterSource;
GoalListPageParameter({required this.pageNumber, required this.filterSource});
@override
List<Object?> get props => [pageNumber,filterSource.index];
}
class AsyncGoalListNotifier extends AutoDisposeFamilyAsyncNotifier<GdGoalPageResponse, GoalListPageParameter> {
@override
FutureOr<GdGoalPageResponse> build(GoalListPageParameter arg) async {
final aPageSize = ref.watch(userPreferencesProvider.select((value) => value.listPageSize));
late FindParameters aParams;
switch (arg.filterSource) {
case GoalListFilterSource.list:
aParams = ref.watch(selectGoalFilterProvider);
break;
case GoalListFilterSource.select:
aParams = ref.watch(selectGoalFilterProvider);
aParams.search.addFilter(GdGoalUtil.attributeOpen,GdFieldType.typeBool,SearchOperand.equals,FilterValue.bool(true));
break;
case GoalListFilterSource.scheduling:
aParams = FindParameters();
aParams.search.addFilter(GdGoalUtil.attributeOpen,GdFieldType.typeBool,SearchOperand.equals,FilterValue.bool(true));
aParams.search.addFilter(GdGoalUtil.attributeScheduledBasis, GdFieldType.typeDateLineBasis, SearchOperand.equals, FilterValue.dateLineBasis(DateLineBasis.undefined));
break;
}
aParams.page = GdPage.page(arg.pageNumber, aPageSize);
final aRes = await ref.watch(goalServiceProvider).findHierListPage(aParams);
return GdGoalPageResponse(pageNumber: arg.pageNumber, pageSize: aPageSize, goals: aRes);
}
}
final findGoalListProvider = AutoDisposeFamilyAsyncNotifierProvider<AsyncGoalListNotifier,GdGoalPageResponse,GoalListPageParameter>(
AsyncGoalListNotifier.new
);
When I try to use this in my Flutter widget, I'm getting the following error...
final anAsync = ref.watch(findGoalListProvider(GoalListPageParameter(pageNumber: 0, filterSource: widget.filterSource)));
error: The expression doesn't evaluate to a function, so it can't be invoked.
Any suggestions?
Upvotes: 0
Views: 24
Reputation: 1600
Found the problem...
The old code...
final findGoalListProvider = AutoDisposeFamilyAsyncNotifierProvider<AsyncGoalListNotifier,GdGoalPageResponse,GoalListPageParameter>(
AsyncGoalListNotifier.new
);
The correct version...
final findGoalListProvider = AutoDisposeAsyncNotifierProviderFamily<FindGoalListNotifier,GdGoalPageResponse,GoalListPageParameter>(
FindGoalListNotifier.new
);
Upvotes: 0