Skip to content

Extensions for Jetpack Navigation Compose: Material 3 BottomSheet, custom ModalSheet, Results and more.

License

Notifications You must be signed in to change notification settings

hrach/navigation-compose-ext

Repository files navigation

Extensions for Navigation Compose

CI Build GitHub release

See demo module.

Use Maven Central and these dependencies:

dependencies {	implementation("dev.hrach.navigation:bottomsheet:<version>")	implementation("dev.hrach.navigation:modalsheet:<version>")	implementation("dev.hrach.navigation:results:<version>") }

Components:

  • BottomSheet - Connects the official Material 3 BottomSheet with Jetpack Navigation.
  • ModalSheet - A custom destination type for Jetpack Navigation that brings fullscreen content with modal animation.
  • Results - Passing a result simply between destinations.

Quick setup:

val modalSheetNavigator = remember { ModalSheetNavigator() } val bottomSheetNavigator = remember { BottomSheetNavigator() } val navController = rememberNavController(modalSheetNavigator, bottomSheetNavigator) NavHost(	navController = navController,	startDestination = Destinations.Home, ) {	composable<Destinations.Home> { Home(navController) }	modalSheet<Destinations.Modal> { Modal(navController) }	bottomSheet<Destinations.BottomSheet> { BottomSheet(navController) } } ModalSheetHost(modalSheetNavigator, containerColor = MaterialTheme.colorScheme.background) BottomSheetHost(bottomSheetNavigator)

Results sharing:

object Destinations {	@Serializable data object BottomSheet {	@Serializable data class Result( val id: Int,	)	} } @Composable fun Home(navController: NavController) { NavigationResultEffect<Destinations.BottomSheet.Result>(	backStackEntry = remember(navController) { navController.getBackStackEntry<Destinations.Home>() },	navController = navController,	) { result -> // process result -	} } @Composable fun BottomSheet(navController: NavController) { OutlineButton(onClick = { navController.setResult(Destinations.BottomSheet.Result(42)) }) { Text("Close")	} }

About

Extensions for Jetpack Navigation Compose: Material 3 BottomSheet, custom ModalSheet, Results and more.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 8