Beginner's Crash Course to the New Navigation 3 Library (Android & KMP)
- Google의 새로운 Navigation 3 라이브러리(알파 버전)가 출시되었으며, 기존 Compose Navigation보다 개선된 아이디어와 기능을 제공합니다. 🚀
- Navigation 3는 Compose Multiplatform(KMP) 프로젝트와 호환되어, Android 및 크로스 플랫폼 개발에 활용될 수 있습니다. 🌐
nav3-core, nav3-lifecycle, Kotlin serialization, Koin, window-size-class 등 필수 의존성 설정이 필요하며, 특히 Kotlin serialization은 타입 안전한 목적지 정의에 사용됩니다. 📦
- 기존
NavHost 대신 NavDisplay 컴포저블이 새로운 내비게이션 설정의 진입점 역할을 합니다. 🔄
- 가장 중요한 변화는
NavController 대신 개발자가 Backstack을 직접 소유하고 제어할 수 있게 되어, 스택 조작의 유연성이 크게 향상되었다는 점입니다. 🧠
rememberNavBackstack 유틸리티 함수를 사용하여 NavKey 타입의 요소를 포함하는 Backstack을 생성합니다. 🛠️
- 모든 내비게이션 목적지(화면)는
NavKey 마커 인터페이스를 구현해야 하며, 이는 타입 안전한 내비게이션을 가능하게 합니다. 🔑
- 앱 시작 시 단일 목적지뿐만 아니라 여러 화면으로 구성된 초기 백스택을 유연하게 정의할 수 있습니다. 🚦
EntryDecorators는 NavDisplay에 상태 저장, ViewModel 스코핑, "장면" 처리 등 추가 기능을 유연하게 부여하며, 이는 인터셉터와 유사한 역할을 합니다. ✨
EntryProvider 람다는 각 NavKey에 해당하는 UI 컴포저블을 정의하는 역할을 하며, when 표현식을 통해 목적지에 따라 다른 화면을 표시합니다. 🖼️
- 실제 UI 컴포저블은
NavEntry로 래핑되어야 하며, 이는 컴포저블 진입점을 제공하고 선택적으로 메타데이터를 포함할 수 있습니다. 🎁
- Kotlin serialization을 통해 목적지 데이터 클래스를
Serializable로 마킹하면 프로세스 종료 후에도 백스택 상태를 자동으로 복원할 수 있습니다. 💾
데브허브 | DEVHUB | Beginner's Crash Course to the New Navigation 3 Library (Android & KMP)