В Jetpack делают KMP API для обработки системных жестов нажатия назад или Predictive Back
Новая библиотека Jetpack NavigationEvent содержит в себе API для обработки нажатия назад или для отслеживания прогресса жеста назад. API cхоже с Dispatcher которое было сделано для Back ранее. Поддерживаются KMP таргеты: Android, Desktop/JVM, iOS, JS, Linux, WASM, watchOS, tvOS, Ming
ComponentActivity реализует интерфейс NavigationEventDispatcherOwner
:
interface NavigationEventDispatcherOwner {
val navigationEventDispatcher: NavigationEventDispatcher
}
NavigationEventDispatcher
представляет собой класс, для передачи системны событий Назад:class NavigationEventDispatcher(
private val fallbackOnBackPressed: (() -> Unit)?,
private val onHasEnabledCallbacksChanged: ((Boolean) -> Unit)?,
)
// Добавления callback чтобы слушать когда произйдет нажатие "Назад"
fun addCallback(
callback: NavigationEventCallback,
priority: NavigationEventPriority = NavigationEventPriority.Default
)
fun dispatchOnStarted(event: NavigationEvent)
fun dispatchOnProgressed(event: NavigationEvent)
fun dispatchOnCompleted()
fun dispatchOnCancelled()
}
В Android Activity можно подписаться на обработку события
class MyActivity : ComponentActivity() {
init {
navigationEventDispatcher.addCallback(
callback = object : NavigationEventCallback(
isEnabled = true,
priority = NavigationEventPriority.Default
) {
override fun onEventCompleted() {
// Back сделан
}
},
priority = NavigationEventPriority.Default
)
}
}
#android #jetpack #навигация #kmp #kotlin
>>Click here to continue<<