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