Парни, зацените RxPM на мультиплатформе.
API еще сырое, доков пока нет, но основные идеи уже проработаны.
Из интересного:
- State работает на MutableStateFlow
- Обработка навигации теперь происходит в ПМ-ке.
- Каждая ПМ-ка может создать роутер и перехватывать навигационные сообщения.
- Роутер управляет бэкстеком из ПМ-ок, пока есть только команды pop и push. Будут добавляться еще по аналогии с Conductor.
- Реализовано сохранение/восстановление состояние бэкстека и стейта ПМ-ок после смерти процесса. Для сериализации используется kotlinx.serialization.
- Появился новый вариант стейта - SaveableState, который умеет сохраняться и восстанавливаться после смерти процесса. Работает с примитивами и c Serializable.
- Action реализован через Channel.RENDEZVOUS, это позволяет игнорировать клики на кнопку пока идет обработка запроса.
- Семпл работает на Android(Jetpack Compose) и iOS (SwiftUI), но в принципе ничего не мешает портировать на другие платформы.
- В семпле пример со счетчиком и вариант мультистека, когда в ботомбаре у каждого таба свой вложенный бэкстек.
В планах:
- Проработать диалоги, скорее всего будет что-то типа DialogChildPm
- Добавить аналоги InputControl и CheckControl.
- Портировать основной семпл из RxPM c вводом номера телефона.
- Семпл для десктопа на Jetpack Compose.
- UDF(MVI)-цикл из коробки.
Можно смотреть исходники, фидбэк приветствуется:
https://github.com/dmdevgo/Premo