Comments 55
Доверия графикам никакого.
В чем противоречие? Если флаттер гоняет 60fps в интерфейсе?
Классные 60 фпс, прям летает
Я так понимаю это баг связанный с компиляцией шейдеров ския, который вроде как не решили еще
Подобного не может быть в массе так как на флаттере уже работает довольно много приложений.
flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup
У тайпскрипта кстати есть еще один минус. Даже если забыть что он в js транспайлится — и на этапе написания с js либами взаимодействовать приходится, а оттуда может динамика проползти.
Либо такая статика в некоторых биндинг ах, что лучше бы динамика была в некоторых местах.
Dart, я бы сказал, даже несколько перегружен синтаксическим сахаром, что радует когда ты уже освоился, но на входе бодрит.
А вот как выглядит "Hello World!" на Kivy:
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
class MainApp(MDApp):
def build(self):
return MDLabel(text="Hello, World", halign="center")
MainApp().run()
Помнится, фреймворк Kivy жутко ругали, что он имеет свой собственный движок для отрисовки UI и выглядит одинаково на всех платформах. Но когда новым инструментам потребовался пиар, этот минус быстро превратили в плюс, мол, это же круто — собственный движок для отрисовки UI, единый вид на всех платформах!
выглядит одинаково на всех платформах.
Так приложения на Flutter могут и не одинаково выглядеть, они могут и мимикрировать вполне неплохо под системный UI. В каком-то докладе от гугла по переключателю в меню приложение на лету меняло свой UI из Material Design в iOS-стиль, как бы он ни назывался.
Я из iOS элементов в официальном демонстрационном приложении Flutter видел только несколько кнопок и пару диалогов. Больше там ничего нет.
А причем тут "из какого года"? Последнее обновление официального демонстрационного приложения — 7 февраля 2020 года. В разделе "Cupertino" (виджеты для iOS) всего пара-тройка iOS контролов и текстовых полей. Возможно, разработчики не посчитали нужным включать все, но я говорю о том, что вижу в официальном демо приложении.
Увидел название статьи и почему то знал что увижу ваш комментарий. Вы постоянно разводите холивары на тему что "Kivy лучше Flutter". В чём смысл? Ну не пользуется ваш фреймворк популярностью, может причина в нём, а не в других более популярных фреймворках?
Пока не было вашего комментария, никто и не думал о "холиварах". А если уже на то пошло, то специфика данной статьи располагает (Flutter VS React Native). Реакт Нативщики негодуют, вот и вы подскочили… Особо радуют знания "специалистов" по Flutter, которые даже не в курсе, есть ли в этом фреймворке поддержка адаптации UI к особенностям платформы и все-таки натив или не натив. Но вы, видимо, как большой специалист, сейчас нас просветите...
Я и написал — пара-тройка. Если быть точным — 11. А если отбросить элементы "Переключатель", который ничем не отличается от того же на Android, "Navigation bar", который на самом деле просто обычный список (не понятно, зачем его включили в раздел Cupertino), "Кнопки" (две), которые оказываются на самом деле просто RaisedButton и FlatButton из Android, "Activity indicator", который просто обычный спиннер, страшнючие текстовые поля (два), которые нормальный человек никогда не будет использовать в своем приложении, "Pull to refresh", который идентичен элементу в Android (опять же, не понятно, зачем его включали в раздел Cupertino), — то можете сами посчитать, сколько там виджетов для iOS. Я написал то, что увидел в официальном демо приложении от 2020 года. Ну и кто здесь врет?
Нет. Просто, видя ваш настрой, когда вы обвинили меня "во все лжи", и когда я привел вам аргументированные доказательства, вы, заявляя, что не будете скачивать оффициальное демо приложение и смотреть, где я вас обманул, все-таки согласны с моим мнением, что НИКАКОЙ поддержки iOS виджетов во Flutter нет!?
Или вы просто пустословите?
Можете привести доказательства моей неправаты?
И не 11! Ты в своем уме!
Если ты — адепт фреймворка, который никому не нужен, то умей предоставить аргументированные доказательства моим комментариям!
МИНУСЫ:
1. Сырой API. Могут поменять спецификацию «На лету».
2. Не работают некоторые нативные вещи, которые должны работать из коробки. Например, до сих пор есть глюки в текстовых полях на некоторых моделях телефонов (задваивается текст). Решается костылями. А очень неприятно решать костылями то, что ожидаемо должно правильно работать из коробки.
3. Нет НОРМАЛЬНОГО WYSIWYG-редактора (проект зефир скорее мертв чем жив).
4. Виджеты. Пришлось писать на нативе. В итоге довольно сложная архитектура, т.к. виджет должен работать в паре с основным приложением, а поднимать дартовское приложение в фоне для виджета — это сразу большой расход памяти (напомню, у виджетов например на айфонах есть ограничение в 24 мегабайта). Выкрутиться можно, но архитектура получается довольно дремучая.
ПЛЮСЫ:
Мне понравился и язык, и типизация, и портабельность и скорость работы. Мы делали десктоп и PWA-версию на React (не Native, но все же...) и мобильную разработку на Dart. (Не сочтите за рекламу, потыкать можно тут singularity-app.com). Код мобильной версии получился в разы проще (в основном конечно не из-за языка, а, из-за того, что не нужно было делать типовые десктопные штуки, типа обработку хоткеев и всякие прелести, типа CMD+Z). Плюс паттерн BLOc, который проповедуют в мире Flutter, в итоге дает более понятный код и меньше слоев абстракции, чем Redux (тут очень спорно и холиварно, и все зависит от задачи, но в нашем случае это оказалось так; впрочем никто не мешает его использовать MOBx но в больших приложениях есть риск утонуть в отладке обзерверов).
Итог такой, что лично я доволен Flutter. А минусы — везде есть )
ReactNative зло которое должно умереть. Особую боль составляет его дебаг и попытка обновить любой проект сложнее hello world.
Вообще проше JS закопать, чем решить все его проблемы
Оно весьма крупное (eComm + eCare) и всё у нас, в общем-то, хорошо. В том числе и с дебагом. Особенно приятно с hot-reload в версии >0.61 и тайм-тревеллом.
Нерешаемых проблем не обнаружили, композиция компонент в реакт очень хорошо работает.
Довольно легко подключаются сторонние либы. Мы подключили проприетарную нативную либу по распознаванию лиц и документов с потока видео из камеры и это не заняло у нас много времени. Работает хорошо и на андроид и на айос.
Из проблем, столкнулись лишь с долгим временем запуска андроид приложений (на айос вполне нормально), т.к. для этого требуется запускать движок JS. Пробовали различные ухищрения, но они давали не очень существенный прирост. Сейчас смотрим в сторону Hermes, по заверениям, он может дать прирост х2
И да, у react-native есть потрясающая фича — обновление приложения «на лету», даже не надо обновлять само приложение в магазинах (play market, ios store).
Т.к. приложение запускает index.bundle.js, то его можно подгрузить с интернета во время запуска и пофиксить багу, без обновления основного приложения.
Очень приятная плюшка, а flutter так может? )
И отдельно хочется отметить различные варианты разработки. Ребята очень заморочились и разрабатывать можно: как обычным способом, запуская на устройстве/эмуляторе, так и используя специальное приложение NativeScript Playground, которое после сканирования QR из консоли (!) отображает разрабатываемое приложение с динамическим обновлением при изменении. Ну и совсем для ленивых — запуск в этом же вспомогательном приложении по QR коду вообще из браузера.
В общем, советую попробовать: play.nativescript.org
первый же вопрос — как решение работает с разными жестами и системами навигациями на ведре,
второй — как быстро апп-ку можно будет адаптировать под ipad.
dataModel = await dataController.getModel(myParam);
Dart перегружен чрезмерно
мне всегда казалось он построен был так, как должен был js. Разве нет?
Мы уже во всю используем await, а Dart юзает Future.
Future это же аналог промисов, только попроще, разве нет? В итоге одна фигня — есть либы, что axios у js что duo на дарте.
dart.dev/codelabs/async-await
А в выборе дарта для флаттера вместо TypeScript я тоже вижу сугубо личную обиду кого-то из мейнтейнеров, недооценили вы нас, так получайте сполна))
8 плюсов Flutter по сравнению с React Native