작성
·
159
0
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<IModelWithId>' is not a subtype of type 'List<RatingModel>?' of 'data'
#0 CursorPagination.copyWith (package:codefactory_lecture/common/model/cursor_pagination_model.dart:28:14)
#1 Pagination.paginate (package:codefactory_lecture/common/provider/pagination_provider.dart:91:22)
<asynchronous suspension>
이건 디테일 스크린에서 rating을 fetchmore로 더 불러올때 나는 에러입니다.
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<IModelWithId>' is not a subtype of type 'List<RestaurantModel>?' of 'data'
#0 CursorPagination.copyWith (package:codefactory_lecture/common/model/cursor_pagination_model.dart:28:14)
#1 Pagination.paginate (package:codefactory_lecture/common/provider/pagination_provider.dart:91:22)
<asynchronous suspension>
그리고 이건 restaurant_screen.dart에서 쭉 내려서 데이터를 더 불러오려고 할 때 에러입니다. 둘 다 비슷한 에러입니다.
state = resp.copyWith(data: [
...pState.data,
...resp.data,
]);
페이지네이션 코드 중 이 부분에 문제가 있었고,
CursorPagination copyWith({
CursorPaginationMeta? meta,
List<T>? data,
}) {
return CursorPagination<T>(
meta: meta ?? this.meta, data: data ?? this.data);
}
여기서 List<T>? data의 타입이 맞지 않는 것 같습니다.
데이터 타입이 알맞게 각각 들어가야 할텐데, 자꾸 List<IModelWithId> 타입이 들어가는 거 같아요... 어느 부분을 고쳐야 할까요?
감사합니다!!
혹시 이렇게 하라는 말씀이신가요?? 근데 뭐 어찌되었건 이렇게 했더니 에러가 해결되긴 했습니다. 사실, 여전히 데이터는 CursorPagination<RestaurantModel>, CursorPagination<RatingModel>이 아닌, CursorPagination<IModelWithID>로 받아지기는 합니다. 이게 정상인가요??
그리고 데이터가 CursorPagination<IModelWithID>로 받아지기 때문에 Rating 데이터 가져오는 코드에서
이런식으로 좀 다르게 했습니다. 이렇게 하니까 잘 되더라구요. if문에 CursorPagination<RatingModel>처럼 제너릭을 명시해서 제시하면 CursorPagination<IModelWithID>에 걸리지 않아서 Rating Card 위젯들이 렌더링이 안됩니다.
코팩님께서 oop를 활용하여 코딩하는 것을 가르쳐 주고 계신데, 제가 이런식으로 해결한 것이 oop를 제대로 활용한 것인지, 아니면 그냥 dynamic으로 대충 얼버무린것인지... 잘 모르겠습니다.
사실은 제가 코팩님 강의를 보면서 코드를 그대로 따라치고 있지는 않고 리버팟 v2버전 강의에서 보여주신것을 따라서 riverpod_annotation을 이용하여 코딩하고 있습니다. 그래서 에러가 날때마다 너무 무섭습니다 ㅋㅋ 강의랑은 다른 코드를 작성하고 있기 때문에 ㅠㅠ