미누에요
[Flutter] 플러터 타입캐스팅 간 오류, go_router에서 오류, state.extra , context.go, context.push 본문
[Flutter] 플러터 타입캐스팅 간 오류, go_router에서 오류, state.extra , context.go, context.push
미누라니까요 2025. 2. 27. 19:45나는 웹 프론트엔드 개발을 공부하며 현재 React를 메인 기술 스택으로 공부하고 있다.
하지만 8월부터 얼떨결에 앱 개발을 하게되었는데............ 연구실 선배들이 하다가 놔두고 간 프로젝트를 가지고 기능을 추가하라는 교수님의 명령이었다...............
Flutter, 강력한 개발툴이라는 것은 알고있었지만 한참 Google이 자사 프로젝트들을 많이 폐기처분하던 시점이었다.
그래서 나도 Flutter를 공부하다가도 이게 사라져버리면 어떡하지? 라는 마음을 가지고 공부를 했던 거 같다.
우선 개발하게 된 플랫폼은 "Chrip-aid"로, 보육원 기부 플랫폼이다.
자세한 설명은 뒤로하고, 마주했던 문제와 에러에 대해서 설명하겠다.
우선, 기능을 추가하면서 개발하며 "관리자 페이지"를 만들게 되엇다.
관리자 페이지에서 유저들을 관리하기 위해서는 userID를 가지고 CRUD를 진행해야 하기에, UserEntity 외에 UserDetailEntity를 추가하였다.
UserEntity에서 userID와 role을 추가한 게 UserDetailEntity이다.
문제는 관리자 페이지에서 특정 유저의 정보를 수정할 때, 수정하는 페이지로 이동해야한다.
go_router를 이용하였고, 유저 정보는 state.extra로 넘겼다.
크게 아래와 같이 흐름이 넘어간다.
유저 리스트 페이지 -> 유저 상세 정보 페이지 -> 유저 수정 페이지
유저 리스트 페이지 -> 유저 상세정보 페이지
유저 리스트 페이지에서 현재 유저정보를 모두 api 요청하여 받아두었기 때문에 특정 카드를 탭하면 해당하는 유저의 상세정보 페이지로 넘어간다.
해당 유저의 정보만 UserDetailEntity로 state.extra에 담아 넘김
유저 상세 정보 페이지 -> 유저 수정 페이지
유저 상세 정보 페이지에서 유저 수정 페이지로 넘어갈 때는 userID만 필요로 했다.
수정을 하는 api 요청에서 userID만 필요했기 때문
하지만 이 과정에서 에러가 발생했다.
UserDetailEntity가 들어가야 할 자리에 String 타입이 들어오고 있다는 것이다.
분명 데이터의 타입 캐스팅 관련 문제일 것이라 생각해서 extra로 전달하는 과정에서 데이터의 타입을 확인했다.
유저 리스트 페이지에서 유저 상세정보 페이지로 이동할 때는 extra로 UserDetailEntity 타입을 넘긴다.
유저 상세정보 페이지에서 유저 수정페이지로 이동할 때는 extra로 String 타입을 넘긴다. (userID만 넘기기 때문)
위 사진에서 보는 것처럼 UserDetailPage로 이동할 때, UserDetailEntity 형식을 보낸다.
그리고 editPage로 이동할 때는 userID, String 값만 보낸다.
String이 들어가야 할 자리에 String이 들어가고, UserDetailEntity가 들어가야 할 자리에 UserDetailEntity가 들어가는데 왜 그런 에러가 난거지 ??
너무 혼란스러워서 3일동안 extra로 데이터를 전송하는 과정에서 문제가 있는지, 혹은 내가 못본 어떤 곳에 UserDetailEntity 타입이 설정되어있는지 확인했다.
아무것도 코드 상에 문제가 없었다.................
그러던 도중 무언가 이상한 것을 찾았다.............
저 위에 사진에서도 보일텐데, 보이는가.......
유저 리스트페이지에서 UserDetailPage로 이동할 때는 context.push를 사용했다.
반면에 UserEditPage로 이동할 때는 ? context.go를 사용했다.
에이 설마~ 하면서 GPT한테 물어봤다.
에이~ 설마 하면서 context.go로 되어있던 코드를 context.push로 수정하였다.
그 결과는..............!!!!
(에러 안남)
아아아아ㅏ아아아ㅏㄱ
문제를 해결했다.
이 긴 글의 요약은 아래와 같다.
context.go와 context.push를 혼용하여 extra에 전달된 데이터가 엉켜 발생한 문제.
'우당탕탕개발기록' 카테고리의 다른 글
[React] TailwindCSS 반응형이 안먹힌다 ? (0) | 2025.02.27 |
---|---|
[지난 6개월간의 Flutter 앱 개발 회고] Chrip_aid (1) | 2025.02.27 |
[Flutter] Socket_io 에러, ERROR [WsExceptionsHandler] Unexpected token o in JSON at position 1 (0) | 2025.02.27 |