This media is not supported in your browser
VIEW IN TELEGRAM
Шаблонный код в пару кликов
Коллега из Контура, Евгений Мельцайкин, поделился Geminio шаблонами для генерации boilerplate кода.
В репозитории вы найдете несколько полезных примеров, которые сможете смело переиспользовать в своем проекте:
🔸 Шаблон для создания Data и Domain слоя
🔸 Шаблон для создания Compose экрана
🔥 Шаблон для создания Decompose компонента + MviKotlin
🌟 Давайте накинем звёздочек в репозиторий этому джентльмену 😊
#Kotlin #Decompose #MviKotlin
@kotlin_adept
Коллега из Контура, Евгений Мельцайкин, поделился Geminio шаблонами для генерации boilerplate кода.
Geminio – это плагин от HeadHunter для генерации кода из freemarker-ных шаблонов.
В репозитории вы найдете несколько полезных примеров, которые сможете смело переиспользовать в своем проекте:
#Kotlin #Decompose #MviKotlin
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥8👎1
Коллега из Контура, Василий Рылов, поделился архитектурным примером KMP проекта 🔥
В репозитории вы найдете пример приложения построенного по следующим принципам:
🟣 Каждая фича представлена группой модулей: feature-component, feature-domain, feature-ui и feature-data
🟣 Комбинация FSM-based MVI и MVVM+ подхода с простой небиблиотечной ViewModel
🟣 Навигация абстрагирована от Decompose, Decompose компоненты выделены в собственные модули
🟣 Многомодульный DI, каждый модуль может использовать собственную реализацию DI
В примере использованы библиотеки:
🔵 Multiplatform Room
🔵 Multiplatform Settings
🔵 Decompose
🔵 Compose Multiplatform
🔵 Варианты с Kotlin-inject и Koin DI
#KMP #Decompose #Sample
@kotlin_adept
В репозитории вы найдете пример приложения построенного по следующим принципам:
В примере использованы библиотеки:
#KMP #Decompose #Sample
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
Decompose шаг за шагом
Если вы хотели попробовать Decompose, но не знали, с чего начать, то специально для вас Максим Казанцев выпустил подробный туториал по библиотеке. Шаг за шагом автор покажет, как создать простое приложение и познакомит вас со всеми основными компонентами Decompose.
Это лишь первая часть серии видео, в которых вы подробно узнаете, как использовать Decompose на разных платформах.
Смотреть на YouTube🟥
Смотреть на VK Видео📹
#Decompose #KMP
Если вы хотели попробовать Decompose, но не знали, с чего начать, то специально для вас Максим Казанцев выпустил подробный туториал по библиотеке. Шаг за шагом автор покажет, как создать простое приложение и познакомит вас со всеми основными компонентами Decompose.
Это лишь первая часть серии видео, в которых вы подробно узнаете, как использовать Decompose на разных платформах.
Смотреть на YouTube
Смотреть на VK Видео
#Decompose #KMP
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍10🤡2👏1
Как подружить LifecycleOwner и Decompose
Некоторые API в Jetpack библиотеках принимают в качестве параметра LifecycleOwner, например, так сделано в CameraX. Однако если в вашем проекте используется Decompose, и вы используете LocalLifecycleOwner для получения текущего значения в Composable функции, то жизненный цикл будет работать некорректно: он будет соответствовать жизненному циклу Activity или Fragment, так как Decompose нигде не переопределяет этот CompositionLocal и использует собственный жизненный цикл из библиотеки Essenty.
Чтобы исправить эту проблему, необходимо сконвертировать LifecycleOwner из Decompose в его аналог из Jetpack. Однако из коробки пока что такого адаптера нет, и придётся написать его самостоятельно, по аналогии с конвертацией ЖЦ в Essenty.
В версии Decompose 3.4.0 эта проблема будет решаться проще: появится JetpackComponentContext, как отдельная зависимость, и можно будет сразу получить нужный lifecycle прямо из компонента.
Поэтому будьте внимательны при использовании CompositionLocal для работы с жизненным циклом, если навигация в проекте построена на Decompose.
#Decompose #Lifecycle
Некоторые API в Jetpack библиотеках принимают в качестве параметра LifecycleOwner, например, так сделано в CameraX. Однако если в вашем проекте используется Decompose, и вы используете LocalLifecycleOwner для получения текущего значения в Composable функции, то жизненный цикл будет работать некорректно: он будет соответствовать жизненному циклу Activity или Fragment, так как Decompose нигде не переопределяет этот CompositionLocal и использует собственный жизненный цикл из библиотеки Essenty.
Чтобы исправить эту проблему, необходимо сконвертировать LifecycleOwner из Decompose в его аналог из Jetpack. Однако из коробки пока что такого адаптера нет, и придётся написать его самостоятельно, по аналогии с конвертацией ЖЦ в Essenty.
В версии Decompose 3.4.0 эта проблема будет решаться проще: появится JetpackComponentContext, как отдельная зависимость, и можно будет сразу получить нужный lifecycle прямо из компонента.
Поэтому будьте внимательны при использовании CompositionLocal для работы с жизненным циклом, если навигация в проекте построена на Decompose.
#Decompose #Lifecycle
👍16❤1