만들면서한 고민
| topics | 500-모바일개발 501 Flutter |
| types | 학습 |
| contexts | 프로젝트 |
| tags |
만들면서 한 고민
Flutter 앱을 개발하면서 고민했던 점들을 정리한다.
User State에 로딩 클래스를 만들어야할까?
Splash 화면에서 로딩 상태를 표시하기 위해 필요하다.
결론: null 체크만으로는 로딩/에러/미인증 상태를 구분할 수 없다. AsyncValue 같은 래퍼를 쓰거나 로딩 상태를 별도로 관리해야 한다.
Tab vs 바텀 네비게이션 스크롤
- Tab: 위에 있는 탭은 좌우 스크롤을 할 수 있는게 편하다
- 바텀 네비게이션: 스크롤 안해도 상관없다
바텀은 주요 네비게이션이라 항상 보여야 하지만, 탭은 많을 수 있어서 스크롤 가능하게 하는게 낫다.
// 스크롤 가능한 탭
TabBar(
isScrollable: true, // 탭 개수 많으면 스크롤
tabs: [...],
)
Scrollable Content 구조
뒤에도 scrollable하게 만들려면 head_content 파트를 만드는게 맞는듯?
근데 이러면 tab처럼 한 페이지 내에서 컨트롤하는거 만들기 매우 귀찮아진다.
해결책: CustomScrollView와 Sliver를 사용하면 해결할 수 있다. 복잡도가 올라가긴 하지만 유연한 스크롤 레이아웃이 가능해진다.
CustomScrollView(
slivers: [
SliverAppBar(floating: true, ...),
SliverToBoxAdapter(child: HeaderContent()),
SliverList(delegate: ...),
],
)
어노테이션 사용의 유용성
Riverpod 같은 경우 어노테이션(@riverpod)을 사용하면 보일러플레이트 코드가 줄어든다.
장점
- 코드량 감소
- 타입 추론 자동화
- family provider 자동 생성
단점
- 코드 생성 필요 (build_runner)
- 빌드 시간 증가
- 디버깅이 조금 어려움
결론: 프로젝트 규모가 작으면 굳이 안써도 되지만, 크면 쓰는게 생산성에 도움된다.