user2868835
user2868835

Reputation: 1600

Flutter/RiverPod - problem defining AutoDisposeFamilyAsyncNotifierProvider

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

Answers (1)

user2868835
user2868835

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

Related Questions