List 타입 에러
229
작성한 질문수 6
[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> 타입이 들어가는 거 같아요... 어느 부분을 고쳐야 할까요?
답변 1
1
안녕하세요!
혹시 타입을 State 클래스로 전달 한다음 받아보시겠어요?
그래도 안된다면 안되는 위치와 상황 정보와 함께 레포지토리 공유 부탁드립니다.
감사합니다!
0
감사합니다!!
final newState = CursorPagination<T>(
meta: pState.meta, data: [...pState.data, ...resp.data]);
state = newState;혹시 이렇게 하라는 말씀이신가요?? 근데 뭐 어찌되었건 이렇게 했더니 에러가 해결되긴 했습니다. 사실, 여전히 데이터는 CursorPagination<RestaurantModel>, CursorPagination<RatingModel>이 아닌, CursorPagination<IModelWithID>로 받아지기는 합니다. 이게 정상인가요??
그리고 데이터가 CursorPagination<IModelWithID>로 받아지기 때문에 Rating 데이터 가져오는 코드에서
if (ratingState is CursorPagination)
renderRatings(models: List<RatingModel>.from(ratingState.data))이런식으로 좀 다르게 했습니다. 이렇게 하니까 잘 되더라구요. if문에 CursorPagination<RatingModel>처럼 제너릭을 명시해서 제시하면 CursorPagination<IModelWithID>에 걸리지 않아서 Rating Card 위젯들이 렌더링이 안됩니다.
코팩님께서 oop를 활용하여 코딩하는 것을 가르쳐 주고 계신데, 제가 이런식으로 해결한 것이 oop를 제대로 활용한 것인지, 아니면 그냥 dynamic으로 대충 얼버무린것인지... 잘 모르겠습니다.
사실은 제가 코팩님 강의를 보면서 코드를 그대로 따라치고 있지는 않고 리버팟 v2버전 강의에서 보여주신것을 따라서 riverpod_annotation을 이용하여 코딩하고 있습니다. 그래서 에러가 날때마다 너무 무섭습니다 ㅋㅋ 강의랑은 다른 코드를 작성하고 있기 때문에 ㅠㅠ
Isar 마지막 업데이트는 2년전입니다.
0
25
0
FlutterSecureStorage 질문
0
25
0
Dio onError Interceptor 만드는 부분에 질문이 있습니다.
0
74
2
관리자 기능에 대한 질문
0
96
2
part 'restaurant_model.g.dart';
0
91
1
36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.
0
54
2
2번 반환 상황 관련 질문
0
58
2
riverpod 3.0
0
139
2
Asset folder??
0
79
2
디자이너와 협업 시 프레임 크기 설정 관련 질문
0
111
2
FutureProvider, StateNotifierProvider 선택 기준
0
68
2
컴포넌트 모델화
0
61
2
쿼리 파라미터
0
81
2
화면 안보임
0
64
2
PaginationListView
0
50
1
강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.
0
99
2
프로토타입이미지
0
59
2
여러 객체를 상태 관리하는 방법에 대한 질문
0
82
2
장바구니 결제하기 응답이 500이 옵니다.
0
102
2
removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?
0
64
2
이 두가지는 완전히 동일한 기능인가요?
0
104
3
내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...
0
75
2
_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?
0
81
2
코딩 작성 순서 관련 질문
0
83
2





