VMScreensMapBuilder

actual class VMScreensMapBuilder(screensMapBuilder: ScreensMapBuilder)
expect class VMScreensMapBuilder

Builds screens navigation map same as ScreensMapBuilder, additionally allows passing ViewModel via lambda.

Has separate implementations for Android and non Android targets.

Both implementation uses ScreensMapBuilder underneath and adds support for lifecycle aware ViewModel.

Non Android implementation manually manages ViewModel persistence using ViewModelStore and cancels ViewModel.coroutineScope whenever screen or window is disposed.

Android implementation relies on built in solutions from Google *Lifecycle framework.

actual class VMScreensMapBuilder

Constructors

Link copied to clipboard
constructor(screensMapBuilder: ScreensMapBuilder)

Functions

Link copied to clipboard
actual fun <VM : ViewModel> screen(route: String, viewModelFactory: () -> VM, content: (viewModel: VM) -> Unit)
actual inline fun <Args, VM : ViewModel> screen(route: String, noinline viewModelWithArgs: (args: Args?) -> VM, noinline content: (viewModel: VM) -> Unit)
expect fun <VM : ViewModel> screen(route: String, viewModelFactory: @Composable () -> VM, content: @Composable (viewModel: VM) -> Unit)

Alternative implementation of screen that does not pass any arguments.

expect inline fun <Args, VM : ViewModel> screen(route: String, noinline viewModelWithArgs: @Composable (args: Args?) -> VM, noinline content: @Composable (viewModel: VM) -> Unit)

Declare screen content for route and add it to underlying screens map. The screens map will be used to navigate between the screens.

actual fun <VM : ViewModel> screen(route: String, viewModelFactory: () -> VM, content: (viewModel: VM) -> Unit)
actual inline fun <Args, VM : ViewModel> screen(route: String, noinline viewModelWithArgs: (args: Args?) -> VM, noinline content: (viewModel: VM) -> Unit)
Link copied to clipboard
fun VMScreensMapBuilder.screen(route: String, content: @Composable () -> Unit)

Implementation forwarded from ScreensNavigation that does not pass any arguments and does not involve ViewModel initialization.

inline fun <Args> VMScreensMapBuilder.screen(route: String, noinline content: @Composable (args: Args?) -> Unit)

Implementation forwarded from ScreensNavigation which does not involve ViewModel initialization.