인프런 커뮤니티 질문&답변

추이님의 프로필 이미지
추이

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

장바구니 결제에서 에러가 발생합니다

해결된 질문

작성

·

486

·

수정됨

1

안녕하세요 코팩님. 벌써 90%가량 듣게된 수강생입니다

여러 우여곡절 끝에 글 한 번만 쓰고 여기까지 오게되었는데요

물론 다시 들으면서 복기를 해야만 하겠지만 큰 문제없이 왔습니다

이 문제를 해결 못하는 것 보니 특히나..

그런데 장바구니 결제에서 에러가 발생합니다

장바구니 담기는 것까지는 별 문제가 없었는데요

현재 상황에서는 결제가 안 되면, false 값만 전달받기 때문에 어디서 문제인지 알기가 힘듭니다

에러가 발생하는 곳은 basket_screen.dart의 스낵바일 테구요,

스낵바에서 호출하는 곳은 postOrder() 메서드니까,

orderProvider에서 try-catch에서 에러가 발생하나 봅니다

캐치하는 에러를 프린트하니

type 'Null' is not a subtype of type 'String' in type cast 입니다

 

에러가 어디서 난 것인지 알면 검색을 해다가 해결을 하겠는데

3일째 못찾고 있어서 올려봅니다.

스트링 캐스트가 잘못된 것 같아서,

그리고 장바구니 결제 이후의 파일들을 다 살펴봐도 모르겠네요.

제가 해본 건 DateTime쪽 문제인가 싶어서 건드려봤었고

그래서 아래 깃허브 코드가 거기는 다르구요

코드도 여러 번 비교해봤는데 모르겠네요...

깃허브도 올려놓아보겠습니다

 

답변 1

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

열심히 수강해주셔서 정말 감사합니다!

프로젝트를 부분적으로 올려주셔서 Flutter 프로젝트로 인식 못하는 버그가 있는 것 같습니다. 전체 폴더를 빠짐없이 올려주시면 제가 한번 봐드리도록 하겠습니다!

감사합니다!

추이님의 프로필 이미지
추이
질문자

네 라이브러리 폴더만 있으면 되는 줄 알았는데 아닌가 보네요

펍스펙 등등.. 해당 깃에 다시 통째로 업데이트 했습니다

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

레포지토리를 풀 받아서 확인해봤습니다. 힌트 드리면 직접 해결 해보고싶으실까봐 실제 해결법은 엔터 많이 치고서 아래에 작성해드리겠습니다.

우선 힌트는 POST /order를 할때 바디에 스펠링이 틀린 파라미터가 있습니다. Null -> String 에러가 나고있는데 catch(e) 이부분에서 catch(e, stack) 이렇게 두번째 파라미터를 받으시면 정확히 어디서 에러가 나고있는지 stacktrace도 받을 수 있습니다. 해결법은 아래에 작성해두겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

첫번째로 PostOrderBody의 createdAt 속성이 createAt으로 입력돼있습니다. 이렇게되면 실제 요청을 보낼때 createAt을 키값으로 보내기때문에 서버에서 인식하지 못합니다. (물론 필수값이 입력 안되면 에러를 반환해주는게 일반 프로덕션 서버이지만 연습 서버인만큼 완전하게 만들어두진 못했습니다.) 이부분 변경한 후 JsonSerializable다시 빌드를 하시고 실제 postOrder를 실행하는 함수에서 createdAt 값을 넣어줘야합니다. "1234"를 넣어주셨는데 실제 DateTime 값을 String으로 반환해주시면 되겠습니다.

추이님의 프로필 이미지
추이

작성한 질문수

질문하기