Pull to refresh

Comments 5

Как во вьюхах оформляется разный вид для разных ориентаций экрана, направления письма, размера экрана?

Какова скорость и потребление памяти, если сверстать программно на вьюхах и на Compose?

При переносе из Figma плагином код читаем получается? Насколько просто с ним дальше работать?

В целом выглядит как хотели решить какую-то проблему (какую?) и наплодили новых.

Вместо того, чтобы отдать логику разметки отдельному файлу, при этом работать с логикой отображения на нативном Котлине, как альтернативу предлагают вот такое - по моему абсурд. Реализация recyclerview не требуется в принципе. Это уже существует. По факту нужен лишь адаптер. Ну и что, не проще работать с контентом, который должен быть показан в отдельном списке, в отдельном файле? Полностью инкапсуляцируется логика, передаёшь адаптеру сырой массив объектов, а он тебе рисует его, и что в таком подходе плохого?

Вот если бы Compose из коробки предоставил хотя бы блюр, да чтобы работал не абы как (чтоб не было тупых отговорок что будет работать только в последней версии Андроид), а с минимального Андроида, который поддерживается Compose... Тогда мы бы поверили, что он реально круче.

Но пока, из того что вижу, Compose используют либо новички, которые не знают что это такое и только что слепо тыкнули кнопку "создать проект", либо какие-то еретики, которым всё не угодишь.

Подмечал один мой друг, у iOS с вёрсткой всё на голову выше, чем мы имеем на Android. И сложные эффекты, которые видя что работают в iOS просят добавить везде дизайнеры, для нас превращаются в настоящую боль и множество необоснованных багов.

Мне кажется, Compose максимально ультимативное решение для максимально типичного MVP - чтобы всё было в одном файле: о какой либо чистой архитектуре говорить не призодится

Работаю с проектом средней сложности, SAA, и уже так надоели костыли для передачи аргументов между Activity, фрагментами, обработка результатов ActivityResultAPI, что всё сильнее сиотрю на Compose, где нет этого роя "экранов", а всё происходит как бы в одном месте.

По поводу LaunchEffect у вас не полное описание и не передан ключевой момент -

LaunchedEffect: run suspend functions in the scope of a composable

Ниже пример который соберется и будет работать, но компилятор подсветит ошибку -

Calls to launch should happen inside a LaunchedEffect and not composition



@Composable
fun Timer() {
    var seconds by remember { mutableStateOf(0) }
    CoroutineScope(Dispatchers.IO).launch {
        delay(1000)
        seconds++
    }
    Text(text = "Seconds: $seconds")
}

@Composable
fun Timer() {
    var seconds by remember { mutableStateOf(0) }

    LaunchedEffect(seconds) {
            delay(1000)
            seconds++
        }

    Text(text = "Seconds: $seconds")
}

Использование while(true) внутри Composable тоже спорный подход. Я бы реализовал таймер так

Sign up to leave a comment.