База знаний
Flutter 12 июля 2019

Flutter — единственная правильная кроссплатформа

Flutter — первая кроссплатформенная технология в технологическом стеке Surf. До этого студия в течение 7 лет разрабатывала исключительно нативные приложения.

Технологию Flutter создали инженеры компании Google. Они собрали позитивный и негативный опыт всех существующих кроссплатформенных решений и вывели рецепт идеальной кроссплатформы.

  • Flutter позволяет сэкономить без потерь в качестве. Разработка одного Flutter-приложения, которое будет работать и на iOS, и на Android-устройствах, стоит на 30% дешевле, чем разработка двух нативных приложений с нуля.
  • Приложения на Flutter написаны на единой кодовой базе: тестировать и отлаживать проще, вероятность ошибок меньше.
  • Нет рассинхронизации платформенных команд — релизы выходят без задержки.
  • Пользователи не заметят никакой разницы по сравнению с нативными приложениями.

В отличие от PhoneGap, Cordova, Ionic и других веб-фреймворков, Flutter не рендерит пользовательский интерфейс на WebView. За визуализацию приложения отвечает собственный графический движок и несколько пакетов кастомизируемых виджетов: это позволяет в небольшие сроки реализовать практически любой дизайн интерфейса.

Flutter-приложения пишутся на языке Dart: он компилируется в нативный код той платформы, для которой готовится сборка. Поэтому UI-элементы, анимации, переходы между экранами работают так же хорошо, как работали бы в нативном приложении.

Человеческий мозг воспринимает картинку идеально плавной, если интерфейс обновляется с частотой 60 кадров в секунду. React Native не всегда может обеспечить такую частоту. Для Flutter это не проблема — он «выдает» производительность до 120 кадров в секунду.

Kotlin Native позволяет унифицировать между платформами лишь код бизнес-логики. Flutter — не только бизнес-логику, но и UI. Это важно: у типичного фронт-энд приложения, в том числе мобильного, пользовательский интерфейс — достаточно трудоемкая в реализации часть.

Одна команда разработки, два приложения, в два раза меньше проблем, 30-процентная экономия средств.

Flutter имеет доступ ко всем фичам поддерживаемых платформ. Технологии платформенных каналов позволяют обращаться из Dart-кода напрямую к открытым интерфейсам платформы: камере, GPS, сенсорам, файловой системе устройства и т.д.

Flutter-индустрия развивается — это сказывается и на ситуации на рынке труда. Порог вхождения в технологию низкий: фреймворк относительно простой. Язык привычный: Dart — объектно-ориентированный язык, по синтаксису напоминает смесь Java и JS. Поэтому всё больше специалистов приходит во Flutter из смежных сфер: Android, iOS, web.

Команда Surf — пионеры Flutter в России. Мы активно участвуем в развитии сообщества: наши разработчики основали первый русскоязычный подкаст о Flutter, написали известный пост о Flutter на habrahabr, регулярно выпускают новые статьи о технологии, выступают на конференциях.

Мы убедились в преимуществах Flutter на собственном опыте: успешно запустили внутреннее приложение для сотрудников продовольственного ритейлера, внутрикорпоративное мобильное решение для сотрудников KFC, первый российский мобильный банк на Flutter — Росбанк, приложение для самой большой сети аптек Ригла.

FAQ

В: Как выглядит сборка приложения изнутри? Что во что компилируется?

О: Для Android: движок на C++ - Android NDK, Dart-код приложения - в нативную ARM библиотеку. Всё это пакуется в *.APK. Для iOS: движок на C++ - LLVM, Dart-код приложения - в нативную ARM библиотеку. Всё это пакуется в *.IPA.

В дебажной сборке на всех платформах на устройство тянется Dart VM для выполнения чистого Dart-кода без его компиляции в нативную библиотеку. Если в приложении есть платформозависимый код для Android (Java, Kotlin) или iOS (Objective-C, Swift), в сборках будут и эти библиотечные модули.

В: Каков размер релизной сборки под обе платформы?

О: Один из наших небольших проектов под Android весит 8,5 Мб, а под iOS — около 30 Мб (с более тяжёлой графикой и Swift-кодом).

В: Можно ли во Flutter работать с <название любой библиотеки под Android или iOS>?

О: Да, можно. Но эти библиотеки будут доступны только под ту платформу, под которую были написаны изначально.

В: Можно ли во Flutter работать с пермишенами/пушами/файловой системой?

О: Да, без каких-либо ограничений на обеих платформах.

В: Как во Flutter обстоят дела с шифрованием?

О: Для шифрования/дешифрования есть вменяемый порт Bouncy Castle на Dart.

В: Почему все говорят, что во Flutter можно делать безумные анимации? В чём отличия от нативных SDK?

О: Во многом потому, что это по факту это сингл-активити приложение и любые анимации при переходах между экранами возможны — в отличие от стандартных мульти-активити Android-приложений. UI очень гибкий к любым трансформациям: благодаря удачной коробочной библиотеке, анимации поддаются любые характеристики виджетов. Ну и наконец, производительный графический движок позволяет отрисовывать любые анимации в 60 FPS. А на некоторых устройствах — до 120 FPS.

В: Flutter поддерживает адаптацию под планшеты?

О: Планшетная адаптация выполняется без проблем — сразу под все платформы.

В: Flutter позволяет писать приложения, работающие в офлайне?

О: Возможность работы в оффлайне — не проблема для Flutter-приложений. Строго говоря, этот вопрос вообще не лежит в плоскости фреймворка и реализуется на более низком уровне. Flutter без ограничений поддерживает работу и с базами данных, и с файловой системой: можно реализовать любой вариант кэширования, который будет отвечать требованиям бизнеса.

В: Существуют ли примеры успешных Flutter-приложений?

О: Клиент для Taobao — одно из самых больших Flutter-приложений, которое покоряет китайский рынок и имеет более 100 тысяч активных пользователей. Шоукейс-видео про этот проект

Приложение Google Реклама

Много кейсов собрано на официальном сайте Flutter

Сайт с тысячами Flutter-приложений разной степени известности и совершенно разные по функциональности. Можно поставить приложение на обе платформы прямо со странички и посмотреть на них в действии.

Кейс Риглы — самой крупной сети аптек в России

Кейс Росбанка — первого в России мобильного банка на Flutter

Кейс DSR — внутрикорпоративного мобильного решения для сотрудников KFC

Показать все К списку статей