У кого-то получилось запустить Decompose без условных when для всех

экранов? Хочу понять как decompose ложиться на большое приложение

19 ответов

29 просмотров

Можно сделать базовый интерфейс для компонентов с Composable функцией Content, и реализовывать её в каждом компоненте. Т.е. полиморфизм через наследование, вместо when. Но тут тогда другие минусы.

Nikita-Kulikov Автор вопроса

@arkivanov, может ты подскажешь? Я пока нечто такое придумал: abstract class FeatureEntry<T : RootScreenConfig>( val configClass: KClass<T> ) { @Composable abstract fun <R : T> Render(config: R, componentContext: ComponentContext) }

Nikita-Kulikov Автор вопроса
Arkadii Ivanov
Можно сделать базовый интерфейс для компонентов с ...

Да, но тогда как искать экраны и как передавать аргументы?

Nikita-Kulikov Автор вопроса

Если есть у кого примеры многомодульных проектов на decompose было бы классно глянуть - пока все что видел это один монолит

Nikita Kulikov
Да, но тогда как искать экраны и как передавать ар...

Там when в двух местах - в компоненте в childFactory при создании дочерних компонентов и в UI при отображении. В первом случае мне кажется не избавиться от when, т.к. в любом случае надо создавать N компонетов (N вызовов конструкторов). Во втором случае поможет общий Composable интерфейс, но появятся другие минусы (компонент знает о UI).

Nikita-Kulikov Автор вопроса
Arkadii Ivanov
Там when в двух местах - в компоненте в childFacto...

Мне не нравится что в текущем варианте есть компонент который знает обо всех экранах - я бы хотел этого избежать

Nikita Kulikov
Если есть у кого примеры многомодульных проектов н...

Вот простой но с несколькими модулями пример - https://github.com/IlyaGulya/TodoAppDecomposeMviKotlin

Nikita Kulikov
Мне не нравится что в текущем варианте есть компон...

Надо группировать компонеты, например вынести флоу авторизации в отдельный компонет. Сделать отдельные компонеты для Signed-In и Signed-Out состояний, и т.д.

А что?

Nikita-Kulikov Автор вопроса

А сколько у вас экранов?

Nikita-Kulikov Автор вопроса

Эх, мне не нравится там работа со вложенными графами навигации, с диплинками и общая стабильность библиотеки

Она же хороша только тем что сделана гуглом

Maxim Filatov
С диплинками все прям плохо?

Никому не верь Сам попробуй У меня нет проблем с ними.

Nikita-Kulikov Автор вопроса
Foenix 00001
Никому не верь Сам попробуй У меня нет проблем с н...

А как вы открываете диплинк во вложенном графе навигации с бекстеком?

Nikita Kulikov
А как вы открываете диплинк во вложенном графе нав...

Я не помню про вложенность Но диплинк хорошо открывается и бекстек на месте Приложение несколько раз приводила) см профиль

Nikita-Kulikov Автор вопроса
Foenix 00001
Я не помню про вложенность Но диплинк хорошо откры...

Бекстек должен уметь сетиться из диплинка, а компоуз это не позволяет

Похожие вопросы

Обсуждают сегодня

Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
12
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Всем привет В общем надо на странице вакансии вывести вакансии с hh, но когда я пишу код в разделе Code ошибка Invalid URL format. The URL should start with the forward slash...
A da
1
посыпаю голову пеплом =) https://docs.vapor.codes/advanced/files/?h=stream#files
Seryoga
10
В чем может быть причина такого поведения? Библиотека есть, версия совпадает, но не собирается. Скармливаешь в rebar.lock - работает (потом отваливается другая, и так, пока не...
Δημήτηρ
2
Карта сайта