Fixed backpress behaviour BatteryDetails.kt

This commit is contained in:
sockenklaus
2022-07-22 03:08:38 +02:00
parent 69f12eb78f
commit 00dc69ae6c

View File

@@ -1,12 +1,15 @@
package com.sockenklaus.batterytracker.ui.composables
import androidx.activity.OnBackPressedCallback
import androidx.activity.OnBackPressedDispatcher
import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.Text
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.runtime.Composable
import androidx.compose.runtime.*
import androidx.navigation.NavController
import com.sockenklaus.batterytracker.ui.Routes
import com.sockenklaus.batterytracker.ui.models.MainViewModel
@@ -17,6 +20,14 @@ fun BatteryDetails(
batteryId: Int? = null,
appState: MainViewModel
){
var onBack = {
val backTarget = navController.previousBackStackEntry?.destination?.route ?: Routes.HOME
appState.currentScreen = backTarget
navController.navigate(backTarget)
}
BackPressHandler(onBackPressed = onBack)
Text(batteryId.toString())
}
@@ -40,3 +51,27 @@ fun DetailsTopAppBar(
}
)
}
@Composable
fun BackPressHandler(
backPressedDispatcher: OnBackPressedDispatcher? = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher,
onBackPressed: () -> Unit
) {
val currentOnBackPressed by rememberUpdatedState(newValue = onBackPressed)
val backCallback = remember {
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
currentOnBackPressed()
}
}
}
DisposableEffect(key1 = backPressedDispatcher) {
backPressedDispatcher?.addCallback(backCallback)
onDispose {
backCallback.remove()
}
}
}