— это прекрасно) Так ли на самом деле? Расскажите ещё пожалуйста про подводные камни
Из неочевидных подводных камней - нет доступа к чайлдам и их параметрам. В xml их можно было всегда достать по айдишнику. Поэтому некоторые специфичные юзкейсы могут не сработать на компоузе. Например, у меня есть интерактивный туториал, который подсвечивает заданные вьюхи и пишет к ним какое-то пояснение. На компоузе за несколько месяцев не придумал, как это адекватно сделать.
Понял, спасибо огромное!
это же следствие из композ-архитектуры, как я понял?
что хорошо с Jetpack Compose, это то что фреймворк совместим с View-системой, поэтому сложности подобные описанной Вячеславом решаются обычной оберткой android.view.View в androidx.compose.ui.viewinterop.AndroidView
Придется весь экран на вью держать в описанном мной сценарии. Не очень композ-вей.
Можно же тогда наоборот постепенно переносить части экрана из XML в компоуз с помощью ComposeView и постепенно прийдете к компоуз-вей)
Перечитайте, пожалуйста, ещё раз изначальное сообщение. Там описывается механика, которая в принципе отсутствует в композе из коробки, а именно - поиск заданных чайлдов в дереве и получение их параметров. Да, есть доступ к нодам, но там такие костыли придется воротить, что писать на композе вообще перехочется :)
один экран это много?)
Вы уходите в демагогию. Человек задал вопрос о недостатках технологии, я привёл пример, когда на композе в принципе не реализуемо какое-то поведение. Да, это редкий сценарий, но конкретно в моём случае он аффектил три экрана: главный и два на самом популярном флоу в приложении. Но всё же отвечу: даже один экран может быть проблемой, потому что вам придется поддерживать две дизайн-системы в приложении. Т.е. каждая задача от дизайнеров будет в два раза сложнее, хоть доработка, хоть новый компонент.
эм, с каких пор у нас образуется две дизайн-системы?)
Одна для композа, вторая - для обычных вью.
А зачем искать чилдов - в идеологии композе - передавай в функции стайте для отрисовки нужного состояния.
дизайнер формирует дизайн систему, это уже дело разработчика скармливать эту дизайн систему по-старому или по-новому. Композ позволяет скормить дизайн-систему по-старому из styles.xml
Да не все так просто.
какие сложности? забыл может
Чтобы найти их расположение на экране, померить и уже на основе этого отрисовать оверлей. Речь о примерно таком функционале:
Не все компоненты прописаны только в xml. Иногда вокруг материала пишутся врапперы. Условно есть инпут, а мы делаем компонент с двумя инпутами на строке, да ещё и иконочкой сбоку. И таких кастомных компонентов может быть несколько десятков.
ну так это же дело разработчика сделать два таких компонента. Хотя в твоем случае это изи на композе сделать
так ты передаешь чтото типа Box{ if(viewstate.isShowSquareOverlay){ Overlay() } Square() }
Извини, мне надоело тебе доказывать. У тебя есть точка зрения, и ты упорно её давишь, несмотря на приведённые аргументы.
Не помню, чтобы кто-то из гугл говорил, что композ-вей это иметь 100% кодовую базу UI на Jetpack Compose. Интероп есть. Гугл говорит используй столько, сколько хочешь.
добавил простенький подобный туториал экран в свою демо аппку как пример как можно подобное делать на композе https://github.com/andkulikov/compose-photoapp/commit/0ce26695e7238185fb202f57ef323b50d4e5b96d
Обсуждают сегодня