Fixed backpress behaviour BatteryDetails.kt
This commit is contained in:
@@ -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())
|
||||
|
||||
}
|
||||
@@ -39,4 +50,28 @@ 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()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user