Advertisement
ZelimkhanMezhidov

Untitled

Jun 12th, 2022
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.28 KB | None | 0 0
  1. @Stable
  2. @Composable
  3. private fun NavController.currentScreenAsState(): State<Screen> {
  4.  
  5.     val selectedItem = remember { mutableStateOf<Screen>(Screen.Home) }
  6.  
  7.     DisposableEffect(this) {
  8.         val listener = NavController.OnDestinationChangedListener { _, destination, _ ->
  9.             when {
  10.                 destination.hierarchy.any {
  11.                     it.route == Screen.Home.route
  12.                 } -> {
  13.                     selectedItem.value = Screen.Home
  14.                 }
  15.  
  16.                 destination.hierarchy.any {
  17.                     it.route == Screen.Search.route
  18.                 } -> {
  19.                     selectedItem.value = Screen.Search
  20.                 }
  21.  
  22.                 destination.hierarchy.any {
  23.                     it.route == Screen.Favorite.route
  24.                 } -> {
  25.                     selectedItem.value = Screen.Favorite
  26.                 }
  27.  
  28.                 destination.hierarchy.any {
  29.                     it.route == Screen.Profile.route
  30.                 } -> {
  31.                     selectedItem.value = Screen.Profile
  32.                 }
  33.             }
  34.         }
  35.  
  36.         addOnDestinationChangedListener(listener)
  37.  
  38.         onDispose {
  39.             removeOnDestinationChangedListener(listener)
  40.         }
  41.     }
  42.  
  43.     return selectedItem
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement