Pull to refresh

Comments 17

Так и в статье не написано, что Flutter является единственной универсальной средой. У каждого свои преимущества и недостатки.
У Флатера упор на анимации, у React Native тоже есть анимация но у флатера она гораздо удобнее, там больше возможностей и делается она проще. Но «паровозный» код флаттера мне лично не нравится и хуже читается чем у RN.
Намного хуже я бы сказал, а то сильно веская причина в пользу RN
Что значит «паровозный» код?
Это значит — если тот, кто писал этот код уволиться или что-то иное, то команда не сможет завершить этот проект адекватно или за адекватные сроки, т.к. этот код будет непонятным, не очевидным, не поддерживаемым.
Иными словами если с первой попытки проект не вывести в прод, до тех пор пока тот кто его делал с начала не уволится, то шанс его вывести в прод будет крайне мал)
Ну что значит проект не можно будет завершить? На любом языке можно написать тонны макарон и паровозов. Чтобы не было длинных паровозов нужно выделять код в отдельные функции/виджеты. И в Dart-е никто же не отменял нормальных практик написания кода.
Паровозный код можно писать на всех языках. На Flutter можно писать нормально.
UFO just landed and posted this here
Какие, на ваш взгляд, минусы?
UFO just landed and posted this here
Под Android это выглядит как нативное приложение на Java/Kotlin с одной Activity, в которой либа на Flutter рисует весь интерфейс. Эта либа компилится под конкретную архитектуру процессора при помощи NDK и подключенная через JNI.
С одной стороны это надстройка над Java, с другой стороны работает быстро как системные библиотеки.
Рисование производится при помощи SKIA, которая используется в том числе и самим Android для рисования интерфейса.
Для себя я отметил следующие недостатки:
  • всё-таки не до конца нативный вид под обоими платформами, в каких-то мелких деталях
  • больше APK на размер рантайма Flutter ~5Mb
  • немного дольше старт, так как сперва стартует Activity, которая потом грузит эту либу и только после этого что-то начинает отрисовываться
  • сложнее взаимодействие с платформой, которое неизбежно, когда нет нужной либы на Dart Pub
  • на декларативном UI иногда бывает сложнее и/или менее эффективно написать код по сравнению с обычным императивным подходом
  • Dart как язык сильно уступает Kotlin, хотя большинство кейсов он покрывает, но нужно писать больше буков и скобочек
  • Однопоточный язык, сложнее делать всякие реально асинхронные операции. Есть только аналог ServiceWorker как в браузере
  • Background сервисы flutter и dart не покрывают. Там надо писать нативно.


Возможно что-то еще забыл…
Больше на 5 метров? У меня Hello World на iOS собирается либо в 56 Мб в отладочной версии, либо в 13 Мб для финальной. Плюс после десятка запусков «данные приложения» распухли до 6 Мб.
На досуге как-то посмотрел флаттер (основное занятие у меня — это android и kotlin) — так вот весьма понравилось мне. По тьюториалам, конечно, сложно судить, но то, что я видел и пробовал, очень неплохо. Понравилось, как работают с состояниями и как изменения в состояниях рендерится на UI.

Длинный код (всё описание view в коде) с непривычки — да, необычно. Можно нагородить нечитаемых вещей. Но, как я понимаю, в Compose будет примерно так же.
necroposter mode on
ну и как, предсказания и надежды оправдались? если нет — что помешало?
necroposter mode off
Sign up to leave a comment.

Articles