Fyodor Danilov
02/07/2024, 10:52 AMcomponent1 I have implemented the following:
fun DoubleBackCallback(
backHandler: BackHandler,
scope: CoroutineScope,
onBackClicked: () -> Unit,
onDoubleBackClicked: () -> Unit,
) {
var job: Job? = null
var doubleBackPressed = false
var backCallback: BackCallback? = null
backCallback = BackCallback {
if (doubleBackPressed) {
onDoubleBackClicked()
} else {
onBackClicked()
doubleBackPressed = true
job?.cancel()
job = scope.launch(Dispatchers.Default) {
delay(DELAY)
doubleBackPressed = false
}
}
}
backHandler.register(backCallback)
}
DoubleBackCallback(
backHandler = backHandler,
scope = scope,
onBackClicked = {
/* Show snackbar "Click again to exit" */
},
onDoubleBackClicked = {
output(Output.Exit)
}
)
Output.Exit goes to tab1 where it is processed. However I can't close app when I call navigation.pop(), even though component1 is the only component inside tab1. How can I close my app correctly on Output.Exit? When I don't use BackCallback app closes correctly in component1 on back button press.Arkadii Ivanov
02/07/2024, 12:51 PMFyodor Danilov
02/07/2024, 12:52 PM