Почему мобильное приложение на Flutter — хорошая идея для бизнеса в 2020 году

В условиях кризиса компании стремятся сократить расходы, ускорить выход на рынок и усилить присутствие в онлайне с помощью приложений. Из быстрых мобильных решений Surf рекомендует Flutter. Показываем в цифрах.

115115
11

У меня скорее негативный опыт, с Flutter. Первое впечатление крайне положительное, разочарование приходит со временем.  Основное - крайне низкое качество системы в целом. Речь не о том что большинство плагинов тяп ляп собранные на коленке несовместимые ни между собой ни между версиями флатер ни между другими плагинами поделия. Речь о качестве самих библиотек разрабатываемых гуглом. Такое чувство что пишут их на коленке, даже в гугле, причем что странно не зная андроид. Например плагин запуска сервиса, начал запускаться после рестарта версии к восьмой. GRPC плагин выжирал батарею и постоянно терял коннект. Сыпал рандомными ошибками. Периодически гугл перевыпускает плагин, сразу прыгая на версию 2.0 например. И если потерянные коннекты пропали - жор батареи - нет. На айос рендеринг картинок "глитчит" при скроллинге. И жор жор жор батареи. Просто стыдно, открываешь приложение, которое не делает ничего, и оно жрет процентов 10 даже в спящем режиме. Сам флаттер работает совсем по разному в дебаг режиме и в скомпилированном режиме. В дебаг режиме просто ад, в скомпилированном получше. Естественно в скомпилированном режиме дебажить нельзя и тут здраствуй PHP стайл дебага с виджетом потребления ресурсов и тп. Постоянные обновления - приносят постоянную несовместимость и постоянные новые ошибки. Те обновление закрывает одну проблему но создает две новых. Гугл не мелочится и меняет версию дарт с 1.0 на 2.0 - превращая в мусор все что было написано на 1.0. Это сейчас неактуально но характеризует подход. Все будет постоянно ломаться, совместимость теряться и тп. БОльшей части библиотек нет от слова совсем. Работы с сокетами - нет. Работы с чтением почтового протокала - нет. Те сам дарт никому из нормальных разработчиков не вперся и библиотек под него не пишут. Фича с автообновлением (Hot Reload) -отваливается через день. Как только проект становится чуть больше hello world - все ломается и глючит - и отлаживать придется по старинке. Плюс в дебаг режиме все работает по другому - смысла в нем дебажить нет. Ну разве что UI. 

13
Ответить

Не влезло:
Сам язык - напоминает набор заклинаний. Это не язык, в нем нет продуманной системы классов как в яве или продуманной системы библиотек как в Go. Dart это миллион несовместимых между собой "синтаксических сахарков". В каждом виджете, в каждом методе -он свой. Те каждый разработчик делал каждую часть - по своему - без единной логики - и все что вам остается - это выучить этот набор заклинаний. Работа с комьюнити - на уровне - удалить тикет. Те вы пишите ишью - команда флатер просто его удаляет. На одну и ту же проблему - сотни идентичных тикетов висят годами. На все пишут единообразные заклинания -типа проблема с айос, проблема в симуляторе айос, проблема в настройках симулятора айос - или просто удаляют, закрывают и тп. Пилит фреймворк команда хрома. Чувствуется по массивности подхода. Простые решение - это не для нас. Просто берут мегабайтный кусок кода и втыкают в проблему чтоб ее заткнуть (ну, по ощущениям). В итоге, проект я доделал - но выкладывать его стыдно. Он жрет батарею. Глитчит на айос. Единственное что в нем хорошо - он визуально нарядный. В итоге из плея удалил, и в флатер больше не ногой. Пруф

8
Ответить

Извините, но ваш комментарий выглядит как мнение человека далекого от мобильной разработки - на коленке собравшего приложение за 2 часа пробежавшись по верхам и сложив субъективную негативную оценку. Если приложите пруфы про "удаление тикетов", и "мегабайтные куски кода для затыкания проблемы" буду благодарен.

Про себя скажу, что с 2008 года занимаюсь нативной андроид разработкой, специализация - безопасность, с флаттер начинал работать в пет-проджекте с самой первой альфы. Сейчас занимаюсь разработкой финтех приложения на флаттер средней сложности в команде талантливых ребят. 

Ну а теперь по пунктам.

1. Про собранные гуглом на коленке комментарий опущу, вы видно не привыкли читать хороший код, если есть примеры гавнокода - welcome. 

2.  "Сам флаттер работает совсем по разному в дебаг режиме и в скомпилированном режиме. В дебаг режиме просто ад, в скомпилированном получше. " 
" Плюс в дебаг режиме все работает по другому - смысла в нем дебажить нет. Ну разве что UI. " 
две реплики некомпетентного человека. 

Кодовая база для разных режимов абсолютно одинаковая (кроме отличий обоснованных build flavors либо CI), приложение работает абсолютно идентично за исключением: 
 * в дебаг режиме возможно пользоваться хот релод, из-за этого есть органичение на количество кадров рендера + расширенное логгирование + отсутствие минификации и обфускации
* для отладки релизного сборки приложения можно воспользоваться как минимум 3 методами 
 - использовать build mode https://flutter.dev/docs/testing/build-modes
 - профайлить приложение на ios девайсе предварительно скомпилировав dart code, а потом запустить через xcode в profile режиме
 - воспользоваться DartDevTools

3. Работы с сокетами - нет.  
 Абсолютное заблуждение, существуют как решения из коробки, так и от крупных вендоров/компаний 
https://flutter.dev/docs/cookbook/networking/web-sockets
* signalR - https://pub.dev/packages/signalr_client
https://pub.dev/packages/websocket_manager

4. "Работы с чтением почтового протокала - нет."
Заблуждение, для дарт существует большое количество пакетов, которые позволяют работать полноценно с актуальными почтовыми протоколами, для флаттер есть решение, оно в альфе но базовые вещи работают стабильно:
* https://pub.dev/packages/imap_client

5. "Фича с автообновлением (Hot Reload) -отваливается через день. Как только проект становится чуть больше hello world - все ломается и глючит - и отлаживать придется по старинке" - конечно, когда вы добавляете новые файлы, меняете структуру проекта или работаете с кодогенерацией, хотрелод не будет работать, про все эти моменты также написано в оф. документации. 
Задача хотрелоад позволять сокращать время разработки за счет моментально внесения изменений в определенном контексте, причем работает даже в DEBUG режиме, что позволяет менять не только UI, и видеть его ребилд, а также и вносить изменения в business logic на лету. 

Готов подискутировать по всем пунктам, а также ответить на сложные вопросы от разработчиков. 

2
Ответить