А есть ли в компоузе аналог флаттеровской темы? Которая задаёт

внешний вид по умолчанию для всего и вся? Или может планируется добавить?

22 ответов

10 просмотров

Не знаком с флаттером, но в компоузе вроде есть

Сколько я ни пытался использовать XMLные темы (а это вообще адище) или спроектировать свои, пришёл к тому, что пусть лучше функция, которая собирает вью, принимает цвета.

Konstantin-Dovnar Автор вопроса
Mike (деньги не клянчу)
Сколько я ни пытался использовать XMLные темы (а э...

Оно и не на XML построено, к счастью. https://developer.android.com/jetpack/compose/themes

Konstantin Dovnar
Оно и не на XML построено, к счастью. https://dev...

Я понимаю, просто констатирую сложность и негибкость всей концепции.

Konstantin-Dovnar Автор вопроса
Mike (деньги не клянчу)
Я понимаю, просто констатирую сложность и негибкос...

Так, а в чём сложность и негибкость тут? Это же базовая тема. Задаёшь цвета, размеры, формы, оно везде используется по умолчанию. Где-то особый случай? Там уже ручками правишь, ещё и используя основу из темы.

Konstantin Dovnar
Так, а в чём сложность и негибкость тут? Это же ба...

Например, был такой textAppearance. Окей, куда-то я хочу передать готовый textAppearance, но в каком-то случае нужно взять не все его свойства, а где-то, наоборот, ещё и background задать. Вот поэтому мне кажется, что проще передавать отдельные компоненты.

Пользователь 61518
Раз Mike сказал, значит так и есть)

Спасибо за доверие, но не стоит принимать чужое мнение целиком и безоговорочно.

Mike (деньги не клянчу)
Спасибо за доверие, но не стоит принимать чужое мн...

Лишь имел в виду, что твое мнение, как опытного прогера, всегда стоит учитывать

Konstantin-Dovnar Автор вопроса
Mike (деньги не клянчу)
Например, был такой textAppearance. Окей, куда-то ...

Снова могу говорить лишь за флаттер, но мне кажется в компоузе должно быть аналогично: Темы можно копировать с изменением конкретных полей. getMyTextTheme().copyWith(sizy = 20)

Konstantin Dovnar
Снова могу говорить лишь за флаттер, но мне кажетс...

Согласен, вот это прям хорошо. Только тогда нужно, чтобы у того же TextView не было отдельных textSize, lineHeight — только TextAppearance.

Konstantin Dovnar
Снова могу говорить лишь за флаттер, но мне кажетс...

Видел что-то подобное в семплах от гугла, но могу ошибаться

Есть MaterialTheme цвета/текстовые стили/формы из которой используются в Material компонентах. Работает с помощью Ambients. https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTheme.kt;l=29?q=MaterialTheme%20&sq=

Mike (деньги не клянчу)
Согласен, вот это прям хорошо. Только тогда нужно,...

Text composable позволяет переопределять значения стиля с помощью параметров. Также можно использовать TextStyle.copy() https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Text.kt

Mike (деньги не клянчу)
Сколько я ни пытался использовать XMLные темы (а э...

В Compose человеческий типизированый подход с амбиентами, к счастью. Без этого ужаса theme/style в xml, который с несколькими неймспейсами и не понятно что из этого примениться, где нужно app: вместо android:, а то и вовсе без ничего, а где просто опечатку сделал.

Denys
В Compose человеческий типизированый подход с амби...

Что за амбиенты? А хмл, да, ужасная дичь. А если вспомнить что каждая вьюха еще как хочет аттрибуты темы использует, так вообще в результате гадание на кофейной гуще. Но справедливости ради тут не один лишь хмл виноват.

Gor
Что за амбиенты? А хмл, да, ужасная дичь. А если ...

Что-то вроде контекста, но сделанного правильно.

Gor
Что за амбиенты? А хмл, да, ужасная дичь. А если ...

Там совсем не xml виноват, а дурацкий подход стайлингов (возникший эволюционно-х*як-и-в-продашн) и отсутствие линтера для атрибуты. :)

Denys
Там совсем не xml виноват, а дурацкий подход стайл...

Хмл виноват потому что никакой защиты от подобной дичи нету в этом механизме. А так да. Хряк хряк и в продакшен - вот где настоящее зло.

Gor
Хмл виноват потому что никакой защиты от подобной ...

Ну вот компоуз сделан без хмл, в обычном котлин-коде, в котлине я чёт тоже не припомню прям защиты от дураков :)

Andrew Mikhaylov
Ну вот компоуз сделан без хмл, в обычном котлин-ко...

В коде хоть можно открыть MaterialTheme и посмотреть что там провайдится. А в xml с этим беда. :)

Andrew Mikhaylov
Ну вот компоуз сделан без хмл, в обычном котлин-ко...

В плане атрибутов в коде все намного лучше читается. Чем бесконечное наследования хмл, да еще и непонятно каким классом в результате какой атрибут будет использоваться. Уже на уровне текстинпутлейаута начинаются непонятки, а что и как, и куда какой текстапиаренс задать. А это еще вполне себе адекватно работающая вьюха.

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
Карта сайта