myanmarking
10/31/2022, 5:07 PMIan Lake
10/31/2022, 5:12 PMonDestroy
of the activity, current destination changing in Navigation Compose, etc.) rather than trying to hook into the gesture handling itselfmyanmarking
10/31/2022, 5:14 PMste
10/31/2022, 5:36 PMrememberUpdatedState
on onBack
)
@Composable
fun InterceptBackPress(onBack: () -> Unit) {
val lifecycleOwner = LocalLifecycleOwner.current
val backDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
DisposableEffect(backDispatcher) {
val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
onBack()
isEnabled = false
backDispatcher?.onBackPressed()
}
}
backDispatcher?.addCallback(lifecycleOwner, callback)
onDispose(callback::remove)
}
}
Ian Lake
10/31/2022, 5:38 PM