Привет всем, меня зовут Го Шуйю — Flutter GDE, темой сегодняшнего обсуждения будет научно-популярная информация, которая поможет вам более полно понять Flutter, а также развеять некоторые заблуждения. Содержание будет небольшим, но должно помочь вам переоценить Flutter.
С момента выпуска Flutter прошло около шести лет, и я уверен, что сейчас большинство людей уже знакомы с Flutter, хотя возможно кто-то всё ещё находится в состоянии "недостаточной осведомленности". Поэтому основной целью этого обсуждения является распространение некоторых базовых знаний о Flutter, разъяснение общих заблуждений и помощь вам в том, чтобы лучше понять Flutter.
Сегодня мы не будем говорить о технической реализации, а поговорим о красотах и прелестях Flutter.
Давайте начнем со слухов. Flutter с момента своего появления всегда был предметом споров, как методология, так и язык программирования. Однако если взглянуть на это теперь, можно сказать, что для Google это было просто "стандартной процедурой":
Как Android помогает развивать Kotlin и Gradle, так и Flutter помогает развивать Dart. Они дополняют друг друга.Dart, язык программирования для Flutter, ранее был проектом, который находился в состоянии конкуренции и был "забыт", поэтому он не имеет исторических багажов и может легко адаптироваться к шагам развития Flutter.
Хотя выбор Dart в начале мог вызвать противодействие из-за разделения экосистемы JavaScript и Kotlin, однако, как показано выше, Google отлично умеет работать над развитием таких проектов. Dart, начиная с версии Dart 1 до Dart 3, успешно развивается вместе с Flutter.
Конечно, с другой стороны, это связано с тем, что группа разработчиков Dart находится рядом с Flutter, что делает общение между ними удобным.
Конечно, многоплатформенная природа Flutter также принесла ей множество "негативных" эффектов, среди которых были распространены следующие слухи:
На самом деле, стоит лишь немного поразмышлять, и станет очевидным, что запрет на установку приложений Flutter на App Store iOS из-за того, что они являются технологиями Google, совершенно необоснован. Этот слух больше всего связан с тем, что:> Flutter-разработка может привести к потере пользователей для native iOS-разработки, поэтому Apple должна защищать своих разработчиков. На самом деле здесь используются большинство ошибок, с которыми сталкиваются люди. Независимо от того, используете ли вы Flutter или React Native, если вы хотите разрабатывать приложения для iOS и публиковать их в App Store, вам всё равно потребуется Xcode и MacOS. Это не является проблемой для Apple, поскольку это может привлечь больше людей, которые не являются полноценными разработчиками iOS, в экосистему Apple. Кроме того:
Хотя Flutter помогает реализовать верхний уровень UI и бизнес-логику, нижележащие взаимодействия, сборку, упаковку и поддержку платформ не могут обойтись без помощи нативной разработки. Поэтому:
Flutter будет некоторым образом ограничивать экосистему iOS, но с другой стороны, он также позволит людям из других экосистем знакомиться с iOS и использовать его. Даже плагины Flutter в какой-то степени способствуют продвижению Swift.
И ранее были заявления типа "Приложение, созданное с помощью Flutter, использует Material стиль UI, поэтому не может быть опубликовано". По этой логике, основные приложения, такие как Twitter, должны были бы тоже попасть под запрет, так как они используют Material стиль дизайна. К тому же, Flutter имеет компоненты в стиле Cupertino, и даже дизайн продукта был использован как причина отказа.
Стиль приложений, созданных с помощью Flutter, полностью зависит от вашего подхода к использованию этого инструмента.
Фактически, различие между Flutter и React Native заключается в том, что контроллеры Flutter независимы от платформы и используют автономное рендеринг, поэтому он больше похож на независимый игровой движок Unity. Если Unity не вызывает проблем, то Flutter также является лишь маленьким дополнением к технологической экосистеме App Store.Кроме того, сердцем App Store является комиссия за приложения: чем больше приложений вы загружаете, тем больше комиссий платформа получает. Если ваше приложение соответствует требованиям руководства App Store, то использование любой технологии для загрузки приложения не станет препятствием для его публикации.
Наконец, хочу сообщить новость о выпуске нового рендера для мини-приложений WeChat — Skyline. Он был объявлен с увеличенной скоростью загрузки более чем на 50%. В результате анализа сетевых данных было подтверждено, что рендеринг Skyline основан на технологии рисования Flutter.
![]() |
![]() |
---|
Веб-приложение WeChat использует Flutter для отрисовки, главным образом благодаря более детальному контролю за процессом отрисовки и стратегии синхронной растровой отрисовки, что позволяет лучше решать проблемы частичной отрисовки и интеграции с нативными компонентами.
Конечно, здесь WeChat Mini Program использует режим отрисовки Flutter, а не методологии разработки Flutter, то есть разработка остается прежней, но SkyEngine добавляет один уровень преобразования, что является распространённым подходом крупных компаний к использованию Flutter.## Локация Flutter
Следующий раздел посвящён локации Flutter. После его выпуска Flutter стал объектом критики из-за своего многоплатформенного характера. Это естественно привело к появлению множества публикаций в социальных сетях, вызывающих беспокойство относительно многоплатформенной природы Flutter, что аналогично недавнему "паническому" отношению к искусственному интеллекту.
Если раньше были те, кто "напрасно критиковал" Flutter, то теперь появились и те, кто "напрасно хвалил". Вот пример одного из таких "напрасных похвал":
Эти "напрасные похвалы" могут вызывать тревогу и создавать чувство отторжения, постепенно внушая мысль, что цель Flutter — это завоевание экосистем Android и iOS, и что это борьба до последнего вздоха.
Однако реальная локация Flutter совсем другая. Хотя развитие Flutter действительно может затрагивать некоторые области нативной разработки, основная цель Flutter не заключается в этом. Либо наш взгляд отличается от того, который имеют команды Flutter, либо эти команды видят вещи под другим углом.
Например, ранее я провёл простое голосование, где было выявлено, что 71,9% участников используют Android Studio как среду разработки для Flutter.
Однако официальные данные показывают, что эта ситуация применима лишь к некоторым сценариям, таким как разработчики программного обеспечения и руководители отдела технологий, которые чаще всего используют Android Studio для работы с Flutter.> Это кажется вполне нормальным, так как многие разработчики Flutter переходят из мира Android-разработки, поэтому использование Android Studio кажется естественным выбором.
Однако общая тенденция всё же указывает на VS Code, поскольку во всём мире существуют также "непрофессиональные разработчики", использующие Flutter, такие как студенты, дизайнеры, менеджеры проектов и другие специалисты, не являющиеся профессиональными разработчиками. Идеология команды Flutter заключается в том, что:
Flutter не будет выделять жёсткую границу между профессионалами и любителями в области программирования, так как многие студенты и любители сегодня могут стать профессионалами завтра.
Например, автор спорной библиотеки GetX для Flutter работает юристом, но он также очень увлечён разработкой. Он провёл десять лет в сфере информационной безопасности и киберпреступности, затем начал изучать язык Dart, а после этого — Flutter, что привело его к открытому исходному коду.Поэтому официальная целевая аудитория Flutter не ограничивается отбором и конвертацией разработчиков мобильных приложений для Android, iOS, веб-разработчиков и разработчиков ПК. У него есть более широкие цели, такие как предоставление возможностей для обучения непрофессиональных разработчиков. Поэтому во время презентации Flutter часто упоминаются платформы для создания кода, такие как FlutterFlow, а также аналогичные платформы с низким уровнем кодирования, такие как Flutter для Daro.Flutter как кросс-платформенная библиотека пользовательского интерфейса предлагает полную поддержку UI и логики для всех платформ. Благодаря снижению порога входа и повышению повторного использования кода, она расширяет возможности разработчиков. Это цель команды Flutter, хотя с точки зрения разработчика это может восприниматься как давление.
С другой стороны, по мере развития технологий порог входа становится всё ниже:
В настоящее время изменения в экосистемах для Android и iOS не связаны с появлением кросс-платформенных фреймворков, а вызваны общим развитием технологий, увеличением доступных ресурсов и естественным снижением порога входа. Сегодня начальный набор инструментов для разработки Android включает в себя официальную систему Jetpack, которая намного лучше, чем было ещё в 2013 году, когда всё требовало "собственного" решения.
При этом аппаратное обеспечение становится мощнее, а официальные комплекты становятся более полными, что делает требования к кросс-платформенной разработке всё более актуальными. Увеличение повторного использования ресурсов является неизбежным трендом производства, поэтому фреймворки, такие как Compose, тоже начинают поддерживать кросс-платформенную разработку.> С моей точки зрения, кросс-платформенная разработка не является полностью конкурентной; наоборот, она помогает разработчикам одной платформы получить доступ к другой платформе и наоборот, что в некоторой степени повышает активность обоих этих платформ.Кроме того, эта позиция видна и в последних обновлениях для веб-технологий. В выпуске Flutter 3.10 для веба, официально была представлена конкретная позиция Flutter Web:
"Flutter стал первым фреймворком, который был создан с учётом новых веб-технологий, таких как CanvasKit и WebAssembly." Команда Flutter заявила, что Flutter Web не предназначен как универсальная веб-платформа, поскольку аналогичных веб-фреймворков уже существует множество, таких как Angular и React, которые демонстрируют отличные результаты в этой области. Вместо этого Flutter должен сосредоточиться на использовании новых технологий, таких как CanvasKit и WebAssembly.
Поэтому основной задачей Flutter не является конкуренция с другими платформами или привлечение разработчиков, особенно в веб-сфере. Flutter больше направлен на эксперименты с передовыми технологиями: Dart уже поддерживает непосредственную компиляцию в native wasm, а реализация сборщика мусора WasmGC была внедрена в стандарт. В будущем благодаря внедрению WebGPU, WebGPU + WebAssembly могут обеспечить поддержку нового движка Flutter Impeller для Flutter Web.> PS: WebGPU представляет собой новый стандарт, разработанный W3C, который отличается от WebGL тем, что он не основан на OpenGL. Это новый стандарт, предоставляющий новые возможности для рисования 3D в браузерах через низкоуровневые API GPU (видеокарты), включая графические и вычислительные интерфейсы.Таким образом, Flutter может привлечь некоторых разработчиков на основе native, но не будет оказывать давление на native разработку, так как это не является целью и предназначением Flutter.
Поговорив о положительных сторонах, стоит рассмотреть ограничения Flutter. Ограничения существуют для любого фреймворка, и многие из них связаны с его преимуществами.
Давайте коротко вспомним развитие кросс-платформенных фреймворков:
Эта независимость рендеринга UI делает дерево рендеринга Flutter независимым от native платформы. Поэтому, если вам требуется использовать native компоненты внутри Flutter, то стоимость интеграции и влияние на производительность будут значительными. На самом деле, при разработке мобильных приложений с использованием Flutter, невозможно обойтись без интеграции WebView, карт, рекламы, видео и других нативных UI компонентов. Поэтому в течение долгого времени каждая версия Flutter постоянно адаптировалась для поддержки интеграции нативных элементов управления. Например, на платформе Android уже произошло три значительных изменения в интеграции PlatformView, и теперь можно считать, что это реализовано, хотя существуют некоторые ограничения, такие как:
3.10 — когда
PlatformViews
появляются на экране, Flutter ограничивает частоту обновления экрана на iOS для снижения мерцания (подробнее). Когда приложение отображает анимацию или прокручивает содержимое, пользователи могут заметить это при работе сPlatformViews
.
Детали мы здесь не будем раскрывать полностью, если вас интересует эта тема, вы можете прочитать мои статьи:- Микросервисы в Flutter 3.0
Кроме того, одним из ограничений является возможность "горячего" обновления (hot updates). Хотя Flutter теоретически может поддерживать горячее обновление, даже один из старейших членов команды Flutter, Эрик, после своего ухода основал проект shorebirddev, чтобы поддержать горячее обновление в Flutter. Однако сама природа Flutter делает её менее подходящей для такого обновления.
Поскольку в режиме выпуска Flutter скомпилирована в AOT (Ahead-of-Time) исполняемые двоичные файлы, распространение таких файлов запрещено Google Play и App Store. Конечно, внутри страны есть много способов обновления Flutter через отправку различных текстовых данных и использование маппинга или прокси, но эти методы увеличивают стоимость обслуживания и снижают производительность.
Проект shorebirddev пошел ещё дальше и форкнул одну ветку Flutter для модификаций, чтобы поддержать горячее обновление. В связи с этим, приложения Flutter, использующие shorebirddev, пока не поддерживаются в официальных маркетах.
Разумеется, в будущем это может измениться, например, официально сообщается, что поддержка для iOS находится в процессе разработки.
Еще одним ограничением является текстовое форматирование и редактирование. Из-за того что Flutter использует новый независимый движок, у него есть своя уникальная логика отрисовки и форматирования текста. В сравнении с развитой и хорошо проработанной веб-типографикой, существующей уже много лет, можно сказать, что Flutter — это настоящий новичок. Независимо от поддержки нескольких языков, включая китайский, или проблем с шрифтами и их стилями, Flutter имеет ряд деталей, требующих доработки со временем.> Из-за недавней смены на новый движок Impeller количество проблем, требующих исправления в текстах, увеличилось.
Например, в метках Impeller есть много задач, связанных с текстами и версткой.
Кроме того, как мы уже говорили ранее, будущее Flutter Web будет сосредоточено на использовании WASM, что также может вызвать проблемы совместимости. Например, эта веб-страница отрисована с помощью Flutter Web с использованием WASM, но при использовании плагинов для перевода содержимого страницы видно, что только заголовок был переведён, а основной контент — нет.
Это связано с тем, что основной контент Flutter Web отрисовывается с помощью canvas, а не HTML, поэтому его невозможно распознать и перевести. Кроме того, если вы сохраните или распечатаете эту страницу, вы не сможете получить полный контент body.Ещё одним ограничением Flutter Web является SEO. Flutter позволяет Google считывать сайт как объект размером до 3–8 мегабайт. Однако, если вы используете Google PageSpeed Insights для тестирования сайта, он требует, чтобы ваш сайт был меньше 1,8 мегабайта и загружался за одну секунду, чтобы занять высокие позиции.
Поисковики, такие как Google и Bing, ранжируют сайты на основе скорости, используемых языков программирования, автоматического размера изображений, CDN и конечного содержимого. Google требует, чтобы представление для ботов было таким же, как и для пользователя.
Например, использование seo_renderer может нарушить правила Google относительно маскировки SEO, хотя это кажется просто добавлением "альтернативного текста" внутри
Text
, но для Googlebot это совершенно другой HTML-контент, что и является проблемой.
И последнее, в более поздних этапах разработки Flutter всё равно потребуется использовать нативное развитие, что нельзя игнорировать. Независимо от того, насколько богата экосистема плагинов сообщества, она никогда не сможет удовлетворить все требования продуктов и руководства компаний. Например:
Хотя в сообществе уже есть полноценные плагины для работы с биометрической аутентификацией, мне всё же пришлось форкнуть один из них и адаптировать его под специфические нужды продукта.Поэтому Flutter имеет свои преимущества и недостатки, выбор которых следует делать исходя из ваших целей и требований продукта.
И последним вопросом остаётся будущее Flutter. На данный момент самое значительное изменение в Flutter — это новый нижележащий движок Engine: Impeller. Как альтернатива Skia, это необходимый шаг для команды Flutter, как уже упоминалось, сам Skia имеет множество исторических багажей и платформ, которые требуют учета, поэтому он не может полностью совпадать с Flutter. Поэтому выбор Flutter начать самостоятельное развитие Impeller является очень важным инвестиционным решением, которое также предоставляет команде Flutter больше возможностей.
Как и React Native начал самостоятельно развивать Hermes, после чего JSI начал поддерживать синхронные вызовы.
Сейчас Impeller уже поддерживается в официальной версии для iOS, а Android находится в процессе адаптации. Это также привело к некоторым проблемам "периода боли", такими как некоторые проблемы отрисовки шрифтов, но прибыльность этого инвестиция очевидна, возможно, в будущем будет создан новый универсальный "Skia".Кроме того, есть игры. В последние два года на конференциях Google I/O каждый год демонстрируются игры, созданные с помощью Flutter, такие как игра "Pin" и карточная игра. Эти две игры показывают возможности Flutter в области создания игр. Благодаря естественному назначению Flutter, он может использовать сценарии, аналогичные тем, что используются в Unity, поэтому создание игр с помощью Flutter также является одной из официально продвигаемых возможностей.
Можно заметить, что Flutter за последние два года на конференции Google I/O демонстрирует свои игровые возможности весьма успешно, с качественным общим пользовательским интерфейсом и игровым опытом. Особенно сегодняшняя игра сочетает в себе генерацию и дизайн с помощью AI, что ещё более повышает её интерес.
И наконец, способность команды Flutter демонстрировать трёхмерные возможности на мероприятии Flutter Forward. До этого момента Skia был двухмерным движком, поэтому он не мог полностью поддерживать трёхмерные сцены. А теперь Flutter показывает нам его потенциальные возможности для будущего трёхмерного рендера, хотя это пока всего лишь демо, этап "обещания пирожков". Но это также является одним из ожиданий будущего Flutter.
Поэтому можно ждать поддержки трёхмерных игр на Flutter в будущем, однако это возможно только после того, как все текущие проблемы будут решены.
Хорошо, вот и всё, что я хотел рассказать сегодня, спасибо всем.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )