Подобные темы могут показаться тривиальными, но, честно говоря, после использования Flutter в течение более 4 лет легко забыть, почему этот инструмент приносит мне такое удовлетворение. Таким образом, я решил задокументировать некоторые наиболее портящие вещи, связанные с Flutter. Возможно, в следующий раз я напишу о проблемах, которые я терпеть не могу 😉.
Этот пост был первоначально опубликован в моем личном блоге.
Горячая перезагрузка
Это очевидно, но каждый раз, когда мне приходится использовать компилируемый язык без такого рода мгновенного цикла обратной связи, мне очень хочется, чтобы мгновенная перезагрузка кода стала новой нормой в любом языке. Недавно я попробовал dart_frog, и возможность мгновенной перезагрузки реализации серверного кода ощущалась как волшебство.
Открытый исходный код
Flutter и Dart — это проекты с открытым исходным кодом. Это означает, что вы можете просматривать и черпать вдохновение из свободно доступной библиотеки почти бесконечных знаний. Возможность IDE получить доступ к коду, просто осмотрев его, является вишенкой на вершине.
Естественно, код SDK с открытым исходным кодом, написанный более чем 1000 авторов, не будет таким же, как код производственного приложения, ориентированного на клиента. Вы не собираетесь копировать и вставлять код фреймворка и создавать из него приложение. Однако в любой момент, когда вам нужно понять, как написать нетипичный тест, создать новую библиотеку виджетов или разработать новый API, используемый тысячами пользователей, экосистема и кодовая база Flutter — это то место, куда стоит обратиться.
Отношение к открытому исходному коду затрагивает не только код фреймворка. Как разработчик я ясно вижу, как это влияет на сообщество и новичков, которые могут делиться всем тем, что они создают и чему учатся каждый день.
Мультиплатформа
С самого начала моей работы в качестве разработчика я всегда хотел создавать продукты для каждого устройства. Я начинал с таких вещей, как ASP.NET, Xamarin, Android, Ionic или WPF. И это были действительно потрясающие инструменты. Однако именно Flutter позволил мне не чувствовать себя ограниченным используемым техническим стеком.
Определенно, есть вещи, которые будет астрономически сложно создать с помощью Flutter, особенно в вебе или если SDK еще не поддерживает его. Недавняя дискуссия в Twitter о Flutter Web хорошо подытоживает это. И многие из вас уже знают мои личные сомнения по поводу этого варианта использования. Однако именно все остальные платформы заставляют меня с энтузиазмом относиться к будущему Flutter.
Работа, проделанная Canonical с их Desktop Installer, Sonos с последовательностью установки, поддержка складных устройств Андреем Диакону из Microsoft, поддержка Raspberry PI и e-ink POC Саймона Лайтфута. Список можно продолжать и продолжать.
Что еще лучше, большую часть повседневной работы по разработке для мобильных устройств я могу выполнить, запустив легкое приложение для настольного компьютера. Если мне нужно создать простое утилитарное приложение для использования на macOS, большинство API уже есть, и я могу просто использовать свои навыки мобильной разработки. Если мне нужно копнуть глубже, есть еще одна революционная вещь во Flutter:
Беспрепятственный доступ к базовой платформе.
Возможно, это не совсем очевидно, но чем больше вы создаете приложений, которым нужна функциональность, специфичная для конкретной платформы, тем больше вы цените модульный дизайн проекта Flutter. Каждая платформа — это просто еще одна обертка, которую можно свободно конфигурировать, как если бы это было стандартное приложение для macOS/Windows/Android/iOS/Linux….
Конечно, есть некоторые специфические шаги по настройке (например, на этапе сборки в Xcode), которые необходимы для запуска в качестве приложения Flutter, но по большей части вы можете делать все, что вам нужно с вашим родным проектом. Это очень удобно по сравнению, например, с Xamarin, где (я полагаю) за возможность использовать родные API на C# приходилось прятать/объединять родной проект внутри приложения Xamarin.
Наличие доступа к нативному проекту означает, что вы можете использовать другие навыки и ресурсы, чтобы помочь вам с выпуском, настройкой или созданием дополнительных функций.
Особенно архитектура федеративных плагинов облегчает мульти- и кросс-платформенное сотрудничество. В большой команде вы можете найти группы экспертов в своих областях, которым в одиночку было бы сложно создавать решения в противоположной экосистеме. Представьте себе, что вы, будучи разработчиком iOS, создаете приложение для камеры на Android. С Flutter вы можете разделить усилия с помощью тонкого слоя общего «дружественного потребителю» API и получить лучшее из всех миров.
Резюме
Этот список определенно не полный. Есть и другие особенности, такие как процветающее сообщество преподавателей и учеников, высококачественные библиотеки с открытым исходным кодом (достаточно упомянуть flutter_bloc и riverpod), сервер Discord, где мейнтейнеры Flutter работают в открытую, и многое другое. Однако, как и в каждой технологии, здесь есть свои болевые точки. Мы постараемся обсудить их в следующий раз 😉.