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

박찬홍님의 프로필 이미지
박찬홍

작성한 질문수

Flutter 중급 1편 - 클린 아키텍처

Flutter에서 추천하는 Navigator, Router

해결된 질문

작성

·

31

0

안녕하세요

 

여러 레퍼런스 자료를 보던 중 질문이 있어 글을 남깁니다.

아래의 페이지를 읽던 도중 Go_Router 패키지를 쓰는게 추천되는 것 같아 문의드립니다.

https://docs.flutter.dev/ui/navigation#limitations

 

사용해보니 Go router를 쓰면 hot reload나 페이지 Refresh를 했을 때 이전에 전달된 파라미터가 초기화되는 이슈가 있더군요.

Go Router를 쓰는 게 정말 좋을까요? 아니면 제가 사용을 잘못하고 있는건 아닌지 궁금합니다.

의견 부탁드리겠습니다

 

감사합니다.

답변 2

0

오준석님의 프로필 이미지
오준석
지식공유자

go_router 사용에 대해 말씀드리면:

1. Hot Reload 시 파라미터 초기화 문제

- 개발 중에만 발생하는 이슈로, 실제 프로덕션 환경에서는 문제되지 않습니다

- 이는 hot reload의 특성상 상태가 초기화되는 것이 정상적인 동작입니다

2. 데이터 전달 방식 선택

- extra: 임시적인 데이터나 복잡한 객체 전달에 적합

- path/query 파라미터:

* 페이지 새로고침 후에도 데이터 유지 필요시

* 딥링킹 지원 필요시

* URL에서 상태 확인이 필요한 경우

3. go_router 사용 권장 케이스

- 웹 지원이 필요한 프로젝트

- URL 기반 라우팅이 필요한 경우

- 중첩 라우팅이 필요한 경우

- 딥링킹 지원이 필요한 경우

4. 일반 Navigator 사용 케이스

- 단순한 네비게이션만 필요한 경우

- 웹 지원이 불필요한 경우

- URL 기반 라우팅이 불필요한 경우

결론적으로, go_router는 특히 웹 지원이나 딥링킹이 필요한 프로젝트에서 매우 유용하며,

파라미터 전달 방식은 사용 케이스에 따라 적절히 선택하시면 됩니다.

박찬홍님의 프로필 이미지
박찬홍
질문자

상세한 설명 감사드립니다. 잘 이해했습니다.

구조적으로 Provider를 쓰는게 더 좋은 구조일지, path, extra를 필요에 따라 사용하는 것이 좋은 구조일지 고민이 되는데 어떤게 더 나을까요?

오준석님의 프로필 이미지
오준석
지식공유자

구조와 Provider 는 무관합니다. Provider는 상태관리를 편하게 하기 위한 라이브러리라서 기호에 따라 선택하시면 되고요.

편한건 extra 사용이고요, 딥링크나 웹 지원 해야하면 path와 쿼리 방식을 고려하시면 됩니다.

박찬홍님의 프로필 이미지
박찬홍
질문자

답변 감사합니다. 이해했습니다 :-)

0

안녕하세요, 박찬홍님. 인프런 AI 인턴입니다.

Flutter 앱 개발에서의 Navigator와 Router 사용에 관한 질문을 주셨네요. Go Router는 Flutter 앱에서 복잡한 네비게이션 구조를 보다 쉽게 관리할 수 있도록 도와주는 패키지로, 최근 많이 사용되고 있습니다. 하지만, 말씀하신 것처럼 페이지 리프레시나 핫 리로드 시 상태 유지가 어려운 상황이 발생할 수 있습니다.

Go Router를 선택할지의 여부는 프로젝트의 요구사항에 따라 다를 수 있습니다. 만약 앱이 복잡한 네비게이션 구조를 가지고 있으며, URL 기반의 라우팅이 필요한 경우 Go Router가 적합할 수 있습니다. 하지만, 상태 유지가 더 중요하거나 기존의 Navigator 사용에 익숙하신 경우에는 Navigator 2.0을 충분히 활용하실 수 있습니다.

다음은 관련 질문과 답변이 포함된 링크를 추천드립니다:
- “navigator 2.0 관련 적용”: Navigator 2.0에 대한 소개와 사용 경험에 관한 토론이 있는 게시물입니다.
- “중첩 네비게이션 질문입니다.”: 네비게이션 관련 문제 해결 방법이 논의된 게시물로, 귀하의 상황과 유사한 문제와 해결 방법을 찾는 데 도움이 될 수 있습니다.

Go Router를 쓸 때 상태 관리와 관련해서는 Riverpod, Provider 등과의 조합으로 해결할 수 있습니다. 또한, 페이지별 상태 저장에 관한 Flutter의 대부분의 상태 관리 기법들이 이를 지원하고 있으니 참고하시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박찬홍님의 프로필 이미지
박찬홍

작성한 질문수

질문하기