Fixed backpress behaviour BatteryDetails.kt
This commit is contained in:
@@ -1,12 +1,15 @@
|
|||||||
package com.sockenklaus.batterytracker.ui.composables
|
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.Icon
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.TopAppBar
|
import androidx.compose.material.TopAppBar
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.ArrowBack
|
import androidx.compose.material.icons.filled.ArrowBack
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.*
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import com.sockenklaus.batterytracker.ui.Routes
|
import com.sockenklaus.batterytracker.ui.Routes
|
||||||
import com.sockenklaus.batterytracker.ui.models.MainViewModel
|
import com.sockenklaus.batterytracker.ui.models.MainViewModel
|
||||||
@@ -17,6 +20,14 @@ fun BatteryDetails(
|
|||||||
batteryId: Int? = null,
|
batteryId: Int? = null,
|
||||||
appState: MainViewModel
|
appState: MainViewModel
|
||||||
){
|
){
|
||||||
|
var onBack = {
|
||||||
|
val backTarget = navController.previousBackStackEntry?.destination?.route ?: Routes.HOME
|
||||||
|
appState.currentScreen = backTarget
|
||||||
|
navController.navigate(backTarget)
|
||||||
|
}
|
||||||
|
|
||||||
|
BackPressHandler(onBackPressed = onBack)
|
||||||
|
|
||||||
Text(batteryId.toString())
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user