본문 바로가기

[Flutter] - go_router로 오브젝트(Object) 전달하기

ironwhale 2023. 3. 30.

저는 화면을 이동할 때 플러터의 패키지인 go_router를 사용합니다. 그냥 문자열 같은 건 :id 이런 형태로 사용하는데 문제는 문자열이 아닌 의존성 주입을 해야 될 때 오브젝트, 인스턴스를 전달할 필요가 있을 때도 있다는 점입니다. 
지금부터 go_router를 이용해 화면 전환 시 오브젝트를 전달하는 법을 알아보겠습니다. 


Memo memo = state.extra as Memo를 쓰자

아래 예시 코드와 같이 state.extra를 통해 오브젝트를 넘겨주면 됩니다.

GoRoute(
          name: "edit",
          path: "/edit",
          builder: (context, state) {
            Memo memo = state.extra as Memo;
            return EditScreen(memo: memo);
          })

 

그리고 사용할 때는

context.pushNamed("edit", extra: memo);

 

go_router로 수정 기능을 구현하기 위해 저는 오브젝트를 넘겨주는 방법을 몰랐을 때는  테이블의 id(pk)를 넘겨주고  pk로 테이블에서 검색해 오브젝트로 만드는 복잡한 과정을 거쳤는데 이렇게 간단하데 오브젝트를 넘기는 방법이 있었다니 영어로 검색하는 방법을 좀 더 연습해야 할거 같습니다.

 

댓글