Как стать автором
Обновить

Комментарии 2

Спасибо! На самом деле примерно из-за подобных проблем с Moxy давно перешел на MVVM на компонентах. Но, конечно, о kmultiplatform тут говорить не приходится. И решений по выносу презентера на кроссплатформенную часть до этого момента не видел.
Но сразу напрашиваются два вопроса:
1. Как быть с сохранением состояния. Ну то есть, для примера, в компонентах для тяжелых случаев есть SavedStateHandle.
2. Если презентер на стороне kmultiplatform, выходит нельзя воспользоваться, например, paging library и придется городить велосипеды для пагинации?

P.S.
Было время, когда я пробовал Google MVVM, но как-то слишком много кода получается для решения, казалось бы, простых задач
На самом деле объемы кода те же, просто не все смотрят на практики.
  1. Есть SaveStatePresenter в зависимости com.github.adevone.summer:summer-android-save-state. Внутри него в state можно класть только то, что можно положить в Bundle. Это проверяется в compile-time. Так как используется Bundle, это Android-only решение. Сейчас я в процессе разработки чего-то подобного, но мультиплатформенного. На базе kotlinx.serialization, например.
  2. Думаю, это можно решить это с помощью expect/actual. Лично я использую flow для пагинации.

Да, в MVVM примерно такое же количество кода, но нужно городить отдельные классы для того, чтобы прокинуть несколько параметров в один эвент. Не всегда удобно, как по мне.


MVP для мультиплатформы мне нравится тем, что во время компиляции проверяется, все ли методы view реализованы. Когда есть две платформы и одна из них опережает другую, это очень удобно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории