Vaibhav Jaiswal
05/01/2025, 2:32 PMVaibhav Jaiswal
05/01/2025, 2:32 PMactual fun <C : Any, T : Any> backAnimation(
backHandler: BackHandler,
onBack: () -> Unit,
onCancel: () -> Unit
): StackAnimation<C, T> = predictiveBackAnimation(
backHandler = backHandler,
fallbackAnimation = stackAnimation(slide()),
onBack = onBack,
selector = { initialBackEvent, _, _ ->
androidPredictiveBackAnimatable(initialBackEvent).let {
AndroidPredictiveBackAnimation(it, onCancel)
}
},
)
@OptIn(ExperimentalDecomposeApi::class)
class AndroidPredictiveBackAnimation(
private val animatable: PredictiveBackAnimatable,
private val onCancel: () -> Unit
) : PredictiveBackAnimatable by animatable {
override suspend fun cancel() {
animatable.cancel()
onCancel()
}
}
Arkadii Ivanov
05/01/2025, 7:44 PM