Как стать автором
Обновить

Комментарии 17

React Native уже не канает да?)
Так и в статье не написано, что Flutter является единственной универсальной средой. У каждого свои преимущества и недостатки.
У Флатера упор на анимации, у React Native тоже есть анимация но у флатера она гораздо удобнее, там больше возможностей и делается она проще. Но «паровозный» код флаттера мне лично не нравится и хуже читается чем у RN.
Намного хуже я бы сказал, а то сильно веская причина в пользу RN
Что значит «паровозный» код?
Это значит — если тот, кто писал этот код уволиться или что-то иное, то команда не сможет завершить этот проект адекватно или за адекватные сроки, т.к. этот код будет непонятным, не очевидным, не поддерживаемым.
Иными словами если с первой попытки проект не вывести в прод, до тех пор пока тот кто его делал с начала не уволится, то шанс его вывести в прод будет крайне мал)
Ну что значит проект не можно будет завершить? На любом языке можно написать тонны макарон и паровозов. Чтобы не было длинных паровозов нужно выделять код в отдельные функции/виджеты. И в Dart-е никто же не отменял нормальных практик написания кода.
Паровозный код можно писать на всех языках. На Flutter можно писать нормально.
НЛО прилетело и опубликовало эту надпись здесь
Какие, на ваш взгляд, минусы?
НЛО прилетело и опубликовало эту надпись здесь
есть отличный доклад Артура Василова на эту тему
Под 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
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации