Привязка Kotlin Coroutine с поддержкой Flow

Coroutine Flow — холодный поток значений. Неблокирующий, но последовательный. Цель потоков — стать для асинхронных потоков данных тем же, чем функции приостановки для асинхронных операций — удобными, безопасными, простыми в освоении и простыми в использовании.

Когда-то я был влюблен в ReactiveX. Как разработчик Android, я не мог представить разработку приложений без него. Одним из неизменных инструментов всегда был RxBinding.

После перехода на Kotlin и Coroutines мне пришлось от многого отказаться, в том числе от некоторых моих любимых библиотек. Но корутины стали для меня новым миром, который стал больше, лучше, красивее. Я не смог устоять. Я решил создать альтернативы всем моим любимым библиотекам на чистом Kotlin с поддержкой Coroutines. И начал с RxBinding.

Сдержала обещание и хочу поделиться результатом! Я представляю вам API привязки Kotlin Coroutine для виджетов пользовательского интерфейса Android из платформы и вспомогательных библиотек. С поддержкой Flow и ReceiveChannel.



Случаи использования

Я подготовил несколько простых примеров, чтобы описать, как вы можете использовать Corbind.

Если вам нужно получить события изменения текста виджета EditText, простой вариант использования с холодным Flow будет выглядеть примерно так:

Если вы предпочитаете горячий ReceiveChannel и вам нужно получать события выбора страницы ViewPager, то вариант использования преобразуется примерно в это:

А если вам просто нужно выполнить действие по нажатию кнопки, самым простым способом будет:

Еще один традиционный пример включения/отключения кнопки входа по электронной почте и проверке поля пароля:

Вывод

Как видите, Corbind очень похож на RxBinding. Структурно и духовно.

Особая благодарность Джейку Уортону. Этот проект вдохновлен его работой.

Хорошего дня!