fix back nav in bottom bar

This commit is contained in:
Owen LeJeune
2023-06-02 18:58:15 -04:00
parent fbc1719523
commit 918a13d75a
4 changed files with 20 additions and 13 deletions

View File

@@ -71,7 +71,7 @@ dependencies {
def compose = composeVersion def compose = composeVersion
def compose_material3 = "1.0.0-alpha13" def compose_material3 = "1.0.0-alpha13"
def compose_accompanist = "0.24.10-beta" def compose_accompanist = "0.24.10-beta"
def compose_navigation = "2.4.2" def compose_navigation = "2.5.3"
def compose_paging = "1.0.0-alpha16" def compose_paging = "1.0.0-alpha16"
def compose_constraint_layout = "1.0.1" def compose_constraint_layout = "1.0.1"
def compose_activity = "1.4.0" def compose_activity = "1.4.0"

View File

@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.compose.animation.rememberSplineBasedDecay import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
@@ -22,6 +23,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.NavGraph.Companion.findStartDestination
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.NavType import androidx.navigation.NavType
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
@@ -31,6 +33,7 @@ import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument import androidx.navigation.navArgument
import com.kieronquinn.monetcompat.app.MonetCompatActivity import com.kieronquinn.monetcompat.app.MonetCompatActivity
import com.owenlejeune.tvtime.extensions.WindowSizeClass import com.owenlejeune.tvtime.extensions.WindowSizeClass
import com.owenlejeune.tvtime.extensions.navigateInBottomBar
import com.owenlejeune.tvtime.extensions.rememberWindowSizeClass import com.owenlejeune.tvtime.extensions.rememberWindowSizeClass
import com.owenlejeune.tvtime.preferences.AppPreferences import com.owenlejeune.tvtime.preferences.AppPreferences
import com.owenlejeune.tvtime.ui.navigation.BottomNavItem import com.owenlejeune.tvtime.ui.navigation.BottomNavItem
@@ -206,18 +209,10 @@ class MainActivity : MonetCompatActivity() {
appBarTitle: MutableState<String>, appBarTitle: MutableState<String>,
item: BottomNavItem item: BottomNavItem
) { ) {
navigateToRoute(navController, item.route) navController.navigateInBottomBar(item.route)
appBarTitle.value = item.name appBarTitle.value = item.name
} }
private fun navigateToRoute(navController: NavController, route: String) {
navController.navigate(route) {
popUpTo(route)
launchSingleTop = true
restoreState = true
}
}
@Composable @Composable
private fun MainContent( private fun MainContent(
windowSize: WindowSizeClass, windowSize: WindowSizeClass,
@@ -338,8 +333,9 @@ class MainActivity : MonetCompatActivity() {
mainNavStartRoute: String = BottomNavItem.SortedItems[0].route mainNavStartRoute: String = BottomNavItem.SortedItems[0].route
) { ) {
Column { Column {
val navBackStackEntry by navController.currentBackStackEntryAsState() BackHandler(enabled = true) {
val currentRoute = navBackStackEntry?.destination?.route finish()
}
MainNavGraph( MainNavGraph(
activity = this@MainActivity, activity = this@MainActivity,

View File

@@ -34,7 +34,6 @@ class TvTimeApplication: Application() {
) )
} }
MonetCompat.enablePaletteCompat()
MonetCompat.chromaMultiplier = preferences.chromaMultiplier MonetCompat.chromaMultiplier = preferences.chromaMultiplier
MonetCompat.wallpaperColorPicker = { MonetCompat.wallpaperColorPicker = {

View File

@@ -0,0 +1,12 @@
package com.owenlejeune.tvtime.extensions
import androidx.navigation.NavController
import androidx.navigation.NavGraph.Companion.findStartDestination
fun NavController.navigateInBottomBar(route: String) = navigate(route) {
popUpTo(graph.findStartDestination().id) {
inclusive = true
}
launchSingleTop = true
restoreState = true
}