Создание кроссплатформенного мобильного приложения: о Flutter

  • 15 января, 16:45
  • 5052
  • 0

Уже более десяти лет продолжается разработка мобильных приложений, и остается вечный вопрос: что использовать - разработку для мобильных устройств или кроссплатформенное решение? Конечно, все зависит от цели проекта.

На данный момент рынок операционных систем для мобильных устройств (телефонов, планшетов, умных часов, телевизоров и т.д.) сформировался и ориентирован на две основные платформы - Android и iOS. 

Существует множество технологий для создания кроссплатформенных приложений для мобильных систем, среди них: Xamarin, PhoneGap, Ionic, React Native и так далее. 

Создания кроссплатформенного мобильного приложения: Flutter

Google анонсировал еще одну кроссплатформенную систему разработки для мобильных устройств - Flutter с языком программирования Dart. Эта система позволяет разрабатывать приложения для Android, iOS и новой операционной системы с открытым исходным кодом Fuchsia. Итак, каковы основные различия между Flutter и существующими системами:

  1. Скорость работы приложений высокая, поэтому Google добился высокой скорости рендеринга.
  2. Приложения имеют единую кодовую базу для iOS и Android, что означает, что при редактировании или исправлении ошибок нет необходимости выполнять двойную работу.
  3. Приложение выглядит нативно и абсолютно идентично на платформах Android и iOS. Это позволяет избежать двойной разработки сценариев взаимодействия с пользователем. Но вы можете реализовать и настроить интерфейс для каждой платформы.
  4. Если есть необходимость, приложение легко интегрируется с Google Services и Google Cloud.
  5. Для разработчиков есть очень классные инструменты, основанные на Android Studio и Visual Studio Code, отличная документация и неплохая поддержка на форумах.

Естественно, возникает вопрос, стоит ли изучать эту новую платформу Flutter в дополнение к новому языку программирования Dart? Давайте рассмотрим этот вопрос более подробно.

Почему кроссплатформенная разработка на Flutter?

Flutter - это новая, но очень перспективная платформа, которая уже привлекла внимание крупных компаний.

4 декабря 2018 года Flutter 1.0 был выпущен на мероприятии Flutter Live, обозначив первую «стабильную» версию Framework.

Платформа интересна своей простотой по сравнению с разработкой веб-приложений и скоростью работы наравне с нативными приложениями. Высокая производительность приложений и скорость разработки достигаются благодаря нескольким подходам:

  1. В отличие от многих известных мобильных платформ, Flutter не использует JavaScript ни в какой форме. В качестве языка программирования для Flutter был выбран Dart, который скомпилирован в двоичный код, благодаря чему достигается скорость (почти) сопоставимая с Objective-C, Swift, Java или Kotlin.
  2. Flutter не использует нативные компоненты в любой форме, поэтому вам не нужно писать какие-либо слои для связи с ними. Вместо этого, как и игровые движки (а игры имеют очень динамичный пользовательский интерфейс), он рисует весь интерфейс самостоятельно. Кнопки, текст, элементы мультимедиа, фон - все это нарисовано внутри графического движка в самом Flutter. 
  3. Flutter использует декларативный подход. Для еще большего увеличения скорости интерфейса виджеты перерисовываются только тогда, когда что-то в них изменилось (аналогично тому, как это работает в веб-интерфейсе).
  4. В дополнение к этому, в фреймворке есть встроенная функция «горячей перезагрузки», которая широко распространена в Интернете и недоступна на нативных платформах.

Но у технологии Flutter есть и минусы:

  1. Окончательный установочный пакет больше, чем собственная разработка.
  2. Интерфейс создан с использованием кода, что значительно сокращает разрыв между логикой и дизайном.
  3. Библиотек меньше, чем для нативной разработки, хотя их количество постоянно увеличивается.
  4. Это новая технология, и лишь немногие специалисты освоили ее.

Создания кроссплатформенного мобильного приложения: Flutter

О Dart

Dart - это язык программирования, на котором пишутся приложения под Flutter. Если у вас есть опыт работы с Java или JavaScript, вы быстро его освоите.

Летом 2014 года ECMA International, организация стандартизации информационных и коммуникационных технологий, утвердила спецификацию ECMA-408, которая стандартизирует синтаксис и семантику языка Dart, а также состав базовых библиотек и связанных языковых технологий. С тех пор язык Dart является официальным стандартом ECMA.

Давайте посмотрим на основные функции Dart:

  1. Простой и легкий в освоении синтаксис, естественный для программистов на JavaScript, C и Java.
  2. Обеспечивает быстрый запуск и высокую производительность для всех современных мобильных систем.
  3. Возможность определять классы и интерфейсы, которые позволяют использовать инкапсуляцию и повторно использовать существующие методы и данные.
  4. Поддерживаемые типы включают различные типы хешей, массивов и списков, очередей, числовых и строковых типов, типов даты и времени, регулярных выражений (RegExp). Также возможно создание других типов.
  5. Для организации одновременного выполнения лучше всего использовать изолированные атрибуты, код которых выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом путем отправки сообщений.
  6. Поддержка использования библиотек, облегчающих поддержку больших веб-проектов. Реализации сторонних функций могут быть подключены как общие библиотеки. Приложения могут быть разбиты на части, а разработка каждой части поручена отдельной команде программистов.
  7. Возможность создания однородных систем, охватывающих как клиентскую, так и серверную сторону. Использование одного и того же языка и инструментов для клиентских и серверных компонентов упрощает процесс кодирования и исключает постоянное изменение контекста.

Создания кроссплатформенного мобильного приложения: Flutter

Как учить

Если, прочитав о Flutter, вы хотите изучить эту библиотеку, возможно, лучше начать с пошаговых уроков, размещенных на  ресурсе Google Codelabs. Здесь вы можете найти руководство по использованию функций Firebase в приложениях, созданных Flutter.

Как и для любого стандартного цикла обучения для новых языков программирования, вот рекомендуемая последовательность для Flutter и Dart:

  1. Установите Flutter SDK и настройте его в своей любимой IDE.
  2. Загрузите код для «Hello World», просмотрите его и запустите.
  3. Окунитесь в синтаксис Dart и концепцию программирования.
  4. Изучите макеты Flutter и виджеты.
  5. Изучите базы данных Flutter и бэкэнд.

Хорошим примером базового курса Flutter является бесплатный курс по Udacity. Уроки разделены на две главы, и каждая из них займет несколько часов.

Темы для Android и iOS

Обычно необходимо, чтобы приложения для Android выглядели иначе, чем приложения для iOS (и наоборот). Различия заключаются не только в цвете элементов интерфейса, но и в размере и стиле виджетов. То есть приложение требует настройки пользовательского интерфейса для каждой платформы.

Корректное отображение интерфейсов приложений на разных платформах возможно с помощью тем. Настройка приложений во Flutter возможна благодаря условию в коде, где вы можете распознать, под какой платформой (Android или iOS) приложение в данный момент работает, и выполнить код для этой платформы.

Создатели платформы Flutter предлагают разработчикам широкий каталог готовых виджетов. Он содержит два набора элементов, Material Components и Cupertino, которые выглядят родными для каждой платформы. Кроссплатформенные виджеты также доступны. Их внешний вид и поведение идентичны на устройствах iOS и Android.

Создания кроссплатформенного мобильного приложения: Flutter

Тестирование и отладка

Существует три метода тестирования приложений во Flutter: модульное тестирование, тестирование виджетов и интеграционное тестирование.

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

Создания кроссплатформенного мобильного приложения: Flutter

Использование модульного тестирования во Flutter в основном аналогично другим хорошо известным системам модульного тестирования, предназначенным для проверки функциональности класса, метода или функции.

Тестирование виджетов позволяет создавать тест для конкретного виджета отдельно от всего приложения, что значительно упрощает тестирование и позволяет создавать иерархическую структуру тестирования. Иногда довольно сложно и громоздко описать тестирование в приложении; в этом случае Flutter позволяет сначала протестировать один виджет, а затем протестировать его в общем приложении.

Интеграционное тестирование позволяет протестировать работу всего приложения и уже выполняется в эмуляторе iOS или Android. Правильно комбинируя три типа тестирования, вы можете добиться очень хорошего охвата тестирования и избежать дальнейших проблем тестирования при добавлении новых функций.

Все таки даже во Flutter рекомендуется тестировать для каждой платформы отдельно. 

Вывод

Быстрое, почти интуитивно понятное создание пользовательского интерфейса делает прототипирование и эксперименты с UX проще, чем когда-либо, и доступно каждому.

В целом можно сказать, что Flutter подходит для 80 процентов приложений, которые необходимо запускать одновременно на iOS и Android. Эту платформу можно рекомендовать для создания быстрых прототипов, так как разработка действительно быстрая. Его также можно рекомендовать для работы со стандартными пользовательскими приложениями, чтобы сэкономить бюджет и время, чтобы не поддерживать отдельно  код для Swift и Kotlin. 

По материалам Svitla Systems


0 комментариев
Сортировка:
Добавить комментарий