...
🤳 Блог Android новостей, посвященный советам экспертов, новостям, обзорам, телефонам Android, приложениям, инструкциям, планшетам и мобильным телефонам.

Google Flutter – что это такое и как использовать его для создания кроссплатформенных приложений

677

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

Читать дальше: Кросс-платформенная мобильная разработка – проблемы, варианты и почему вам следует это рассмотреть 

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

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

К концу этой статьи вы добавите поддержку Flutter в свою установку Android Studio, изучите некоторые из ее основных функций и создадите приложение «Hello World», полностью написанное на Google Flutter.

Зачем мне использовать Google Flutter?

Google Flutter не основан на Kotlin или Java. Если вы хотите развиваться для этого, вам нужно изучить Dart.

Хотя мысль об изучении еще одного языка программирования может отпугнуть, есть несколько довольно веских причин, чтобы попробовать Flutter:

  • Кроссплатформенность: используя один и тот же модуль рендеринга, фреймворк и библиотеки, Flutter позволяет создать единый пользовательский интерфейс для работы как на Android, так и на iOS. Чтобы ваше приложение было одинаково комфортно на любой платформе, Flutter предоставляет виджеты, стилизованные в соответствии с рекомендациями Купертино (iOS) и Material Design (Android), а также ряд пакетов Flutter, которые предоставляют вам доступ к некоторым сервисам и API для конкретных платформ.
  • Совместимость с другими языками программирования: Flutter интегрируется с кодом Java на Android, а также с ObjectiveC и Swift на iOS, поэтому вам не нужно полностью переписывать существующие приложения, чтобы начать использовать Flutter.
  • Горячая перезагрузка. Обычной практикой является работа над кодом приложения, когда само приложение работает на устройстве Android, чтобы тестировать изменения по мере их внесения. Время, необходимое Android Studio для внесения каждого набора изменений в работающее приложение, действительно может отнять у вас время разработки. Чтобы помочь вам работать более продуктивно, Flutter имеет функцию «горячей перезагрузки», которая позволяет внедрять обновленный исходный код в работающую виртуальную машину (ВМ) Dart. Используя горячую перезагрузку, вы обычно увидите результаты своих изменений менее чем за секунду. Состояние приложения также сохраняется, поэтому вам не нужно тратить время на воссоздание желаемого состояния вручную. Если в вашем приложении есть экран входа в систему, вам не придется повторно вводить учетные данные для входа после каждой горячей перезагрузки.

Установка Google Flutter и Dart

SDK Google Flutter включает почти все, что вам нужно для начала работы с Flutter, включая Dart SDK. Однако он размещен на GitHub, вам, вероятно, следует клонировать этот SDK с помощью Git, а не загружать его.

Одно из основных преимуществ клонирования проекта заключается в том, что гораздо проще быть в курсе новых выпусков.

После того, как вы установили последнюю версию Git, вы готовы к клонированию Flutter:

  • Перейдите на страницу Flutter на GitHub.
  • Нажмите «Клонировать или загрузить», а затем скопируйте URL-адрес.
  • Откройте окно командной строки (Windows) или терминала (Mac) и введите «git clone», затем «-b beta» (поскольку мы клонируем бета-ветку Flutter) и URL-адрес проекта:
git 
  • Затем добавьте Flutter к своему пути, используя следующую команду:
export PATH=
  • Проверьте, есть ли какие-либо недостающие зависимости или невыполненные задачи, которые вам нужно выполнить, выполнив следующую команду командной строки / терминала:
flutter doctor
  • Если последующий отчет предупреждает вас, что вашей установке Flutter «x» дней, выполните следующее:
Flutter upgrade

Google Flutter также может предупреждать о том, что установка Xcode не завершена. Вам нужен только Xcode, если вы разрабатываете для iOS. Если вас интересует только Android, сэкономьте время и место на диске, игнорируя это предупреждение.

Добавление Google Flutter и Dart в Android Studio

Вы можете использовать Google Flutter с любым текстовым редактором, но гораздо проще использовать специальные плагины Flutter и Dart для Android Studio .

Предполагая, что вы используете Android Studio 3.0 или новее:

  • Выберите «Android Studio> Настройки…» на панели инструментов.
  • Select “Plugins” from the left-hand menu.
  • Give the “Browse repositories…” button a click.
  • Search for “Flutter.” When the plugin appears, click its accompanying “Install” button.
  • At this point, a popup should prompt you to install Dart. Click “Yes.”
  • Restart Android Studio.

Creating your first Google Flutter app

The best way to learn a new technology, is to use it, so let's create a “Hello World” app using Flutter and Dart:

  • Select “New > New Flutter Project…” from the Android Studio toolbar.
  • Select “Flutter application > Next.”
  • Give your project a name and specify where it should be stored.
  • Point Android Studio in the direction of your Flutter SDK by clicking the little “…” icon and navigating to the “Flutter” folder (on Mac, this is typically stored in your Home directory). Click “Open.”
  • Enter your company domain, and then click “Finish.”

Open your project’s flutter_app/java/main.dart file. The “Flutter application” template contains lots of code (which we’ll be exploring later) but for now let’s keep things simple and create an app that displays a “Hello World” message. Delete everything in this file and replace it with the following:

import

To run this app, follow these steps:

  • Launch an Android Virtual Device (AVD) or attach a physical Android device to your development machine.
  • Open the “Flutter Device Selection” dropdown (where the cursor is positioned in the following screenshot) and select your device.
  • Select “Run > main.dart” from the Android Studio toolbar.

Google Flutter - что это такое и как использовать его для создания кроссплатформенных приложений

This app may be simple, but it demonstrates some of the core concepts of developing with Flutter, so let’s break it down:

void main() 

In Dart, the => expression is shorthand for { return expression; }.

class MyApp extends StatelessWidget 

In Flutter, almost everything is a widget. Some Flutter widgets are the rough equivalent of Android’s Views. For example the Text widget is equivalent to a TextView. However, in Flutter rows, columns, padding, and even the application itself are also classed as widgets, which is why our application class extends from something called StatelessWidget.

StatelessWidgets are widgets that contain no State. All of a StatelessWidget’s values are final and cannot change at runtime, so the StatelessWidget simply renders what’s passed to its constructors.

The opposite of StatelessWidget is a StatefulWidget, which can change at runtime.

The build() method describes how to display a widget. Flutter calls build() when it inserts a widget into the widget hierarchy, and then re-runs build() every time that widget needs to be updated.

return

Flutter comes with an implementation of Material Design that you can apply by declaring “MaterialApp” as your app’s top level widget.

Here, we’re using the MaterialApp theme out-of-the-box, but you can customize this theme by creating a new ThemeData() instance that contains your desired changes, for example:

import

The “home” argument references the widget that defines the main UI, which in this instance is Scaffold.

A Scaffold widget gives your app a structure that follows Material Design guidelines, by providing an app bar, title, and background color. It also provides APIs for displaying drawers, snackbars, and bottom sheets.

Here, we’re setting the text for our app bar. While apps like Scaffold and AppBar are specific to Material Design apps, Text is a generic widget that you can use in any app.

Center is a layout widget that takes a single child and positions it in the middle of the screen, similar to a LinearLayout with a central gravity.

Creating our second Flutter app: User interaction and StatefulWidgets

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

  • Выберите «Создать> Новый проект Flutter…».
  • Выберите шаблон «Приложение Flutter» и нажмите «Далее».
  • Завершите стандартную настройку проекта.
  • Запустите это приложение, открыв раскрывающийся список «Выбор устройства Flutter» и выбрав свое устройство из списка.
  • Выберите «Выполнить> main.dart» на панели инструментов Android Studio.

Это приложение считает, сколько раз вы нажимали плавающую кнопку действия.

Google Flutter - что это такое и как использовать его для создания кроссплатформенных приложений

Если вы откроете файл flutter_app / java / main.dart, вы увидите следующее:

import

Этот автоматически сгенерированный код демонстрирует ряд функций Flutter, которые мы еще не затронули:

StatefulWidgets

В Google Flutter виджеты не имеют состояния или имеют состояние. StatefulWidget имеет информацию о состоянии, которая может изменяться во время выполнения в ответ на взаимодействие с пользователем.

StatefulWidget состоит из следующих элементов:

  • Виджет, расширяющий неизменяемый класс StatefulWidget. Фактический StatefulWidget – это временный объект, используемый для создания приложения в его текущем состоянии.
  • Класс State, который содержит некоторые изменяемые данные, которые могут изменяться в течение времени существования виджета. Объекты состояния сохраняются между вызовами build(), поэтому они могут сохранять информацию.

Вы вставляете объект State в дерево виджетов, вызывая createState.

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

class MyHomePage extends StatefulWidget 

Строки и столбцы

Во Flutter вы упорядочиваете виджеты, помещая их внутрь других виджетов, чаще всего в двух ориентациях:

  • Строка берет список дочерних виджетов и отображает их по горизонтали.
  • Столбец берет список дочерних виджетов и отображает их вертикально.

И строки, и столбцы имеют различные свойства, которые позволяют вам точно контролировать, где каждый дочерний элемент отображается на экране и сколько места они занимают в строке или столбце. Здесь мы используем свойство mainAxisAlignment, чтобы указать, что дочерние виджеты должны быть центрированы вдоль главной оси родителя:

Если родительский столбец, то главная ось – это вертикальная ось. Если родительская строка является строкой, тогда главная ось – это горизонтальная ось.

Обнаружение взаимодействия с пользователем

Есть еще одна большая разница между этим приложением и нашим проектом «Hello World» – оно может определять ввод пользователя!

Если виджет уже поддерживает обнаружение событий, вам просто нужно передать функцию, которая может обрабатывать желаемое взаимодействие, например:

     floatingActionButton: 

Самый простой способ проверить, поддерживает ли виджет обнаружение событий, – это просмотреть его документацию. Например, страница FloatingActionButton дает понять, что этот виджет поддерживает onPressed.

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

В этом фрагменте GestureDetector отвечает на ввод пользователя, вызывая onTap и затем выводя сообщение в консоль:

class MyApp extends StatelessWidget 

Отправляйте изменения в ваше приложение менее чем за секунду

Если вы знакомы с «Instant Run» Android Studio, то вы будете знать, сколько времени вы можете сэкономить, выборочно выдвигая изменения, вместо того, чтобы создавать новый APK каждый раз, когда вы настраиваете код своего приложения.

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

  • Нажмите кнопку FAB несколько раз, чтобы на счетчике отображалось любое значение, кроме 0.
  • Внесите произвольные изменения в код проекта, например, изменив:
home: new MyHomePage(title: 'Flutter Demo Home Page'),

Для того, чтобы:

home: new MyHomePage(title: 'Flutter'),
  • Нажмите маленькую кнопку «Flutter Hot Reload» на панели инструментов Android Studio (она использует тот же значок, что и Instant Run).
  • Взгляните на свое приложение. Заголовок должен был быть изменен без сброса счетчика на ноль, демонстрируя, что состояние приложения было сохранено.

Подведение итогов

В этой статье мы познакомились с Google Flutter и Dart – что это такое, как его настроить и как создавать простые приложения.

Будете ли вы добавлять Dart в список языков, которые используете для разработки под Android? Или вы придерживаетесь Java (или Kotlin?). Сообщите нам об этом в комментариях ниже!

Источник записи: https://www.androidauthority.com

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