Navigation Guide
Understanding DevView's type-safe navigation system.
[Placeholder: Insert diagram of navigation flow in a DevView module. Use a device frame if relevant.]
Navigation Architecture
DevView uses Navigation3 with kotlinx.serialization for type-safe navigation. Destinations are defined as sealed interfaces implementing NavKey, and navigation is handled via callbacks.
Step-by-Step: Setting Up Navigation
1. Define Destinations
sealed interface MyDestination : NavKey {
@Serializable
data object Main : MyDestination
@Serializable
data class Detail(val id: String) : MyDestination
}
2. Register Destinations and Serialisers
override val registerSerialisers = {
subclass(MyDestination.Main::class, MyDestination.Main.serializer())
subclass(MyDestination.Detail::class, MyDestination.Detail.serializer())
}
3. Handle Navigation Flows
entry<MyDestination.Main> {
MyMainScreen(
onNavigateBack = onNavigateBack,
onDetailClick = { id ->
onNavigate(MyDestination.Detail(id))
}
)
}
entry<MyDestination.Detail> { destination ->
MyDetailScreen(
id = destination.id,
onNavigateBack = onNavigateBack
)
}
Best Practices
- Use sealed interfaces for navigation keys
- Keep navigation flows simple and predictable
- Document all navigation paths
- Test navigation on all supported platforms
Advanced Patterns
[Placeholder: Deep linking, multi-module navigation, platform-specific navigation customisation.]
Troubleshooting
- Navigation not working? Check destination and serialiser definitions.
- Screen not rendering? Verify Compose compatibility and state management.
- Back navigation issues? Ensure
onNavigateBackis correctly wired in all screens.
See Also
Module Development Custom Modules
API Reference
[API reference available via Dokka. Add direct link here when available.]