Курс Flutter Developer - Блок 1. Введение во Flutter

Урок 1. Введение во Flutter

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

Вы также получите свое первое знакомство с ключевым компонентом пользовательских интерфейсов Flutter: Виджетами (Widgets)!

Приступив к курсу Flutter Developer (начальный уровень) вы сделали свой первый шаг к тому, чтобы стать мастером Флаттера. Уроки и инструкции этого курса помогут вашему изучению инструментария Flutter UI Toolkit, платформы Google для создания приложений для мобильных устройств, настольных компьютеров и Интернета на основе единой кодовой базы.

Уроки и руководства курса постепенно научат вас создавать приложения с помощью Flutter. Вы узнаете все о виджетах-компонентах, которые вы создаете для создания своих приложений. Вы также узнаете о навигации и переходах (navigation and transitions), обработке состояний и управлении сетью (handling state and network management). Наконец, вы узнаете, как развернуть приложение для тестировщиков и пользователей.

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

Что такое Flutter?

Проще говоря, Flutter (Флаттер) — это инструментарий разработки программного обеспечения от Google для создания кросс-платформенных приложений. Приложения Flutter состоят из серии пакетов, плагинов и виджетов (packages, plugins, widgets) — но это еще не все. Флаттер — это процесс, философия и сообщество.

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

отличительные особенности фреймворка Flutter
Отличительные особенности фреймворка Flutter

Единственное, чем Флаттер не является — это языком. Flutter использует Dart в качестве языка программирования. Если вы знаете Kotlin, Swift, Java или Typescript, вы найдете Dart знакомым, так как это объектно-ориентированный язык в стиле Си (C-style language).

Вы можете скомпилировать Dart в собственный код, что делает его быстрым. Он также использует виртуальную машину (VM) со специальной функцией: горячая перезагрузка (hot reload). Это позволяет обновить код и увидеть изменения в реальном времени, не применяя его повторно.

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

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

Флаттер действительно хорошо работает как с настольными компьютерами (desktop), так и с Интернетом (web).

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

Напротив, виджеты Flutter существуют параллельно нативным виджетам благодаря настраиваемому движку рендеринга пользовательского интерфейса Skia. Это означает, что инструментарий контролирует внешний вид и поведение пользовательского интерфейса, что обеспечивает согласованное поведение между платформами. С точки зрения производительности, нет никакого штрафа от дополнительных уровней абстракции.

Для кого Flutter?

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

Кроме того, Flutter предназначен для разработчиков с опытом работы на одной платформе, которые хотят разработать приложение, работающее на многих платформах. Это вдвойне верно, если вы веб — разработчик с глубокими знаниями Javascript или Typescript, но еще не начали работать на мобильных устройствах. Вы можете изучить обе основные мобильные платформы сразу!

Если у вас нет существующего приложения, Flutter — отличный способ быстро разработать что-то для проверки идеи или создания полноценного многоплатформенного производственного приложения.

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

Интересные факты о Flutter

Вот лишь пример некоторых замечательных вещей, связанных с использованием Флаттера:

  • Flutter — это открытый исходный (open-source) код. Это означает, что вы можете наблюдать за его эволюцией и знать, что будет дальше, и даже опробовать новые функции в разработке. Вы также можете создавать свои собственные патчи и пакеты или вносить свой код. И вы можете быть вовлечены в сообщество, чтобы помочь другим или внести свой вклад в его будущее направление.
  • Flutter использует язык программирования Dart (Дротик). Dart — это современный язык, ориентированный на пользовательский интерфейс, который компилируется в собственный код ARM или x86 или кросс-компилируется в Javascript. Он поддерживает все замечательные языковые функции, которые люди привыкли любить и ожидать, такие как async/await управление параллелизмом и вывод типов для чистого, типобезопасного кода.
  • Одной из лучших особенностей Flutter является hot reload (горячая перезагрузка). Горячая перезагрузка позволяет вносить обновления в код и пользовательский интерфейс, которые перестраивают дерево виджетов, а затем доставляют их в реальном времени на эмуляторы и устройства — без необходимости перезагрузки состояния или перекомпиляции приложения.
  • Иногда вы вносите изменения, которые влияют на слишком большую часть дерева виджетов или состояния приложения, чтобы легко выполнить горячую перезагрузку. В этих случаях вы можете использовать hot restart (горячий перезапуск). Горячий перезапуск занимает немного больше времени, чем горячая перезагрузка, потому что он загружает изменения, перезапускает приложение и сбрасывает состояние, но это все равно быстрее, чем full restart (полный перезапуск), который перекомпилируется и повторно развертывается. Вы должны использовать полный перезапуск, когда вносите определенные существенные изменения в код, включая все, что меняет управление состоянием.
  • Эти функции перезапуска используют виртуальную машину Dart для внедрения обновленного кода, поэтому они доступны только в режиме отладки, а не в производственном приложении.
  • Другие кросс-платформенные наборы инструментов создают приложения со стоковым внешним видом — и это скучно! Flutter намеренно привлекателен, используя Google’s Material Design из коробки. Кроме того, легко применить виджеты Cupertino, чтобы получить внешний вид iOS. Пользовательский интерфейс полностью настраиваем, что позволяет вам создать приложение, которое подходит именно вашему бренду.
  • Flutter поставляется с отличной анимацией и переходами, а также вы можете создавать собственные виджеты. Поскольку виджеты можно компоновать, вы можете быть творческими и гибкими с пользовательским интерфейсом. Например, вы можете поместить видео за вид прокрутки или поместить панель инструментов поверх холста.
  • Огромное количество виджетов и декларативный синтаксис для создания пользовательских интерфейсов позволяют вам быть чрезвычайно продуктивным, быстро создавая богатое приложение с минимальными накладными расходами и шаблоном. Виджеты с сохранением состояния привязываются к данным и автоматически обновляются при изменении модели данных.
  • Если вы недавно использовали SwiftUI или Jetpack Compose, вы уже знакомы со многими концепциями Flutter. Но Flutter еще лучше — у него меньше ограничений на инструменты, и вы можете создавать сразу для нескольких платформ.
  • Flutter был разработан с учетом специальных возможностей, с встроенной поддержкой динамических размеров шрифтов и программ чтения с экрана, а также множеством лучших практик в области языка, контрастности и методов взаимодействия.
  • Интеграция с платформой важна для доступа к библиотекам, написанным на других языках, или для использования специфичных для платформы функций, которые еще не имеют пакета поддержки Flutter. Flutter поддерживает совместимость C и C++, а также platform channels для подключения к Kotlin и Java на Android и Swift или Objective-C на iOS.

Где используется Flutter

Если вы еще не уверены, что для Флаттера есть место, посмотрите на витрину: https://flutter.dev/showcase.

Там вы видите лучшие компании, использующие Flutter, и насколько разнообразны приложения, которые вы можете с его помощью сделать. Они не ограничиваются приложениями “JSON-in-a-table”, но также включают мультимедийные динамические и интерактивные приложения.

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

Популярные приложения от некоторых крупнейших мировых компаний построены с помощью Flutter. К ним относятся:

  • Very Good Ventures
  • Tencent
  • Realtor.com
  • Google Assistant
  • New York Times
  • Policygenius
  • Google Stadia

Взгляните на некоторые недавние примеры:

Примеры приложений использующих фреймворк Flutter
Примеры приложений использующих фреймворк Flutter

Когда не следует использовать Flutter

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

Игры и аудио

В то время как вы можете создавать простые 2D-игры с помощью Flutter, для сложных 2D и 3D-игр вы, вероятно, предпочтете основывать свое приложение на кросс-платформенной технологии игрового движка, такой как Unity или Unreal. Они имеют больше специфичных для домена функций, таких как физика, управление спрайтами и активами, управление состоянием игры, поддержка мультиплеера и так далее.

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

Приложения с конкретными потребностями в собственном SDK

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

Flutter может быть непрактичным выбором, если вас интересует только одно платформенное приложение и вы обладаете глубокими знаниями инструментов и языков этой платформы. Например, если вы работаете с высоко настроенным приложением iOS на базе CloudKit, которое использует все собственное оборудование, MLKit, StoreKit, расширения и так далее, поддерживать и использовать эти функции будет проще с помощью SwiftUI. Конечно, то же самое относится и к сильно предвзятому приложению для Android, использующему Jetpack Compose.

Определенные платформы

Флаттер не везде «бегает». Он еще не поддерживает Apple Bitcode, а это значит, что он не поддерживает watchOS, tvOS или некоторые расширения приложений iOS. Его поддержка Интернета все еще находится на ранней стадии, а это значит, что Flutter имеет много функций и улучшений производительности впереди, но они грядут.

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

Продолжить изучение ➤ Урок 2. История и Архитектура Flutter

Похожие записи