일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 희망적금전환
- 플러터 #안드로이드 #플레이콘솔 #앱내리기
- 희망적금연계
- 안드로이드 #코틀린 #코루틴 #콜백 #채널
- 도약전환
- 조립 후 재부팅
- 도약계좌전환
- Flutter #Stream #dart
- flutter #dart #stream
- 도약연계
- Flutter #Stream
- 청년도약계좌환승
- Today
- Total
Flutter 개발 상자
[Flutter] GoRouter를 버리고 AutoRouter를 선택하겠습니다. 본문
GoRouter의 장점
이거
왜 쓰나요?
이유는 그거죠. 구글에서 관리하는 Nav2 공식패키지니까.
그리고 라우터 패키지중 따봉수 1위고, 검색하면 수많은 레퍼런스가 나오니까.
GoRouter의 단점
근데 쓰다보니까 음...
구글에서 관리한다는게 막 엄청난 장점은 아니더라구요?
일단 여러명의 구글 직원이 관리하다보니 하나의 PR이 반영되기까지 많은 시간이 걸립니다.
한명이 코드리뷰하고 또 다른사람이 코드리뷰하고... 이게 또 실제 릴리즈 버전에 올라가기까지 또 시간이 걸리고...
실제로 GoRouter 초기에 가장 많은 비판을 받았던 shellRouter의 상태가 저장이 되지 않는 문제의 경우 PR이 만들어지고 반영되기까지 거진 1년이 넘는 시간이 걸렸습니다. 그렇게해서 나온게 statefulShellRouter죠.
그리고 또 은근히 고라우터가 버그가 많이 발생합니다. 메이저버전이 너무 자주오르다보니 어떻게보면 당연할수도 있는문제인데 자꾸 예전에 없던 버그가 생기니까 버전 올리기가 무섭더라구요.
제가 최근에 겪은 문제는 백버튼 감지가 안되는 문제인데
https://github.com/flutter/flutter/issues/140869
[go_router] WillPopScope/PopScope doesn't trigger with back button navigation on root screens · Issue #140869 · flutter/flutte
Steps to reproduce Open the app Wrap screen with WillPopScope or PopScope Click hardware back button or use back gesture Expected results WillPopScope or PopScope callback is invoked Actual results...
github.com
하... 이거 아직도 안고쳐지고 있습니다.
예, 그동안 쌓인 불만이 많았지만 악깡버하면서 GoRouter 썼는데 이제 그냥 탈출하기로 했습니다.
왜 AutoRouter를 선택했는가?
1. 라우터 패키지 따봉수 2등
2. 코드제너레이터 사용으로 알아서 타입검사까지? 오우
3. 확실히 적은 보일러플레이트, 직관성
GoRouter를 쓰면서 go_router_builder를 쓰질 않아서 (존재 자체를 모르고있었음) 화면 이동시 데이터 타입검사에 많은 회의감과 불안함을 느꼈었습니다.
아니 데이터 전달해주는데 컴파일 단계에서 타입체크를 못하면 이거 분명히 내가 실수해서 런타임에러 발생할것같은데... 라는 불안감이요.
그리고 statefulShellRouter를 쓰면서 느낀건데... 너무 그 코드가 복잡합니다. 솔직히 이거 쓸때마다 예제코드 다시보고 있어요. 반면에 AutoRouter는 코드가 짧고 직관적입니다.
적용해본 후기
일단 확실히 레퍼런스가 GoRouter에 비해서 적습니다.
뭔가 문제가 생기면 머리싸매고 공식문서 탐방할 준비해야하구요.
그외에 다른 문제는
하나의 Screen Class에 2개이상의 라우트 이름을 정해주는게 불가능합니다.
만약에 게시판을 만드는데 경로를
/write
/update
이렇게 만들어주고
저기에 대한 화면 UI는 클래스 하나로 재활용하는게 불가능합니다.
이건 좀 은근히 많이 불편한 사항이긴한데 음... 그래도 이거 빼면 다 마음에 드네요.
전 크게 문제되는게 없다면 앞으로의 프로젝트에는 모두 AutoRoute를 적용할 예정입니다.
'Flutter' 카테고리의 다른 글
Controller vs Service 플러터와 Nest.js 관점에서 역할 생각해보기 (0) | 2025.01.06 |
---|---|
[Flutter] SQFlite -> Drift 마이그레이션 후기 (0) | 2024.12.04 |
[2024/3/13 기준] 구글 네비게이션을 앱에서도 사용할 수 있을까? (0) | 2024.03.13 |
[Flutter] @pragma('vm:entry-point') 이란 무엇을 뜻하는가? (2) | 2024.02.08 |
[Flutter] Riverpod의 Provider에서 BuildContext를 매개변수로 받으면 안되는가? (1) | 2024.01.22 |