Сетевая библиотекаСетевая библиотека
Быстрый старт Flutter-разработчика Андрей Алеев В этой книге даны необходимые элементы, база, которую нужно знать Flutter-разработчику, чтобы писать кросс-платформенные мобильные приложения под Android и iOS на языке Dart. Все это представлено в наглядной форме, на практических примерах, в формате уроков, после освоения которых, можно именовать себя Flutter-разработчиком.Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC. Быстрый старт Flutter-разработчика Андрей Алеев © Андрей Алеев, 2019 ISBN 978-5-0050-8797-3 Создано в интеллектуальной издательской системе Ridero Введение Начиная с 2015 года, момента анонсирования Flutter SDK, популярность этой платформы и языка Dart растет неукоснительно. На популярных профильных ресурсах нарастает количество статей по данной тематике, а многие компании и независимые разработчики выпускают в магазины приложения, созданные с помощью Flutter . Цель данной книги – научить вас создавать кросс-платформенные мобильные приложения под Android и iOS на Flutter . На практических примерах мы разберем основы языка Dart и базовые принципы построения Flutter приложений. Книга будет интересна нативным мобильным разработчикам, которые уже занимаются разработкой приложений, а также всем, кто желает начать писать кросс-платформенные мобильные приложения и познакомиться с языком Dart. Необходимы только базовые знания по программированию. Опыт front-end разработки придется очень кстати – с ним материал курса будет освоить гораздо проще. Тем не менее, иметь его совсем не обязательно, тем более что после освоения этой книги вы будете на один большой шаг ближе к тому, чтобы именоваться мастером front-end девелопмента. Ученые из Оксфордского Университета выяснили, что всего лишь 400 слов покрывают 75% всех английских текстов. Это означает, что со словарным запасом в 400 самых используемых слов вы в трех случаях из четырех будете знать о чем идет речь в любом тексте. Аналогичным образом написана данная книга: она не претендует на звание учебника или полного справочника платформы Flutter и языка Dart. Мы не будем разбирать по очереди каждый из виджетов в библиотеке material, не будем заучивать все ключевые слова языка Dart. Наоборот, здесь даны самые необходимые элементы, минимум, который надо знать Flutter разработчику в продакшне, то есть в приложении к решению настоящих задач: созданию мобильных приложений для реального мира. Как работать с этой книгой Лучше всего усваивается информация, полученная эмпирическим путем. Поэтому ожидается, что вы будете не просто пассивно читать эту книгу, а по каждому уроку напишите код и запустите приложение на двух платформах – Android и iOS. В идеале, постарайтесь написать свое приложение, которое будет, к примеру, загружать фотки котиков из сети, или выполнять более утилитарную задачу, пусть, калькулятор. На ваш вкус. В этой книге мы будем разбирать два примера – сначала создадим простой счетчик, а затем более сложный – загрузка прогноза погоды с сайта openweathermap.org. Если вы захотите написать такое же приложение, вам потребуется API KEY с их сайта, а также API KEY Google Maps. Помимо этого, желательно иметь опыт работы с Git, Android Studio, Gradle. Всего в книге 10 глав-уроков, первые уроки более простые, последние – более сложные и для них, возможно, потребуется больше времени. Помогать вам будет уже написанный и работающий код в репозитории проекта – https://github.com/acinonyxjubatus/flyflutter_fast_start (https://github.com/acinonyxjubatus/flyflutter_fast_start) – FlyFlutter Fast Start на гитхабе —, там для каждого урока выделена своя ветка. Старайтесь не просто копировать оттуда код, а вдумчиво писать его, только лишь сверяясь с кодом на гитхабе. Ниже вкратце приведено описание уроков, а также указаны ссылки на соответствующие ветки репозитория. Урок 1. Запускаем Flutter [ветка lesson_1_hello_world] Научимся запускать проект на Flutter под Android и iOS, а также совершать простейшие манипуляции с виджетами. Помимо этого, узнаем чем может быть полезен Flutter и когда на нем можно создавать приложения. Урок 2. Язык программирования Dart Обзорно пройдемся по основным возможностям и правилам языка Dart Урок 3. StatelessWidget и StatefulWidget [ветки lesson_3_1_stateless_widget, lesson_3_1_stateful_widget] Научимся создавать Stateless и StatefulWidget-ы. Узнаем про состояния виджетов, попробуем ими манипулировать. Также узнаем, как декорировать и выравнивать виджеты. Урок 4. Создание списка элементов [ветка lesson_4_listivew] Познакомимся с ListView, узнаем какие есть способы его создания. Полученные знания применим для создания списка с прогнозами погоды. Урок 5. Загрузка данных с сервера [ветка lesson_5_http] Узнаем как можно выполнить асинхронную работу во Flutter. Сделаем запрос на сервер, получим, распарсим и покажем полученную информацию на клиенте. Таким образом, создадим полноценное клиент-серверное приложение. Урок 6. Inherited Widgets, Elements, Keys [ветка lesson_6_inherited] Узнаем, что такое Inherited Widget, а также на примере посмотрим как он работает. Разоберемся с тем, что такое Element-ы и как они работают. Помимо этого, мы познакомимся с ключами Keys и узнаем когда и как их нужно использовать. Урок 7. Навигация между экранами, Работа с Google Maps [ветка lesson_7_navigation_maps] Научимся переключать экраны с помощью Navigator-а. Сможем подключить и показать карты от Google Maps в приложении, а также подключим дополнительный необходимый в примере пакет timezone. Урок 8. SQLite, Clean Architecture [ветка lesson_8_sqlite_clean_architecture] Сумеем подключить SQLite и сохранить данные в локальной базе данных, а также прочесть их. Убедимся, что во Flutter тоже можно и нужно писать чистый код и напишем свою реализацию паттерна Repository. Урок 9. BLoC, Streams [ветки lesson_9_bloc, lesson_9_1_counter_bloc] Узнаем, что такое BLoC, чем он полезен и как использовать библиотеку bloc. Все это применим на практике: мы произведем значительный рефакторинг приложения погоды, придав коду приличествующий вид – повысим читаемость и поддерживаемость. Урок 10. DI, Тесты [ветки lesson_10_di_tests, lesson_9_1_counter_bloc] Освоим технику инверсии зависимостей применительно к Flutter разработке. На практическом примере реализуем паттерн Dependency Injection во Flutter в примере приложения погоды. Затем узнаем, какие бывают тесты. Напишем unit-тесты, widget (UI-тесты) и интеграционные тесты для приложения с погодой. Урок 1. Запускаем Flutter В этой главе: – Кроссплатформенная мобильная разработка – Почему Flutter? – Настраиваем рабочее окружение – Запускаем Hello World на Android – Запускаем Hello World на iOS Кроссплатформенная мобильная разработка Для начала, несколько слов о том, что такое Flutter и зачем он нам нужен. Если вы знаете ответ на вопрос что такое кроссплафторменная разработка и Flutter, листайте дальше к пункту 3 этой главы: Настройка рабочего окружения. Так вышло, что на сегодняшний день в мире мобильных устройств лидируют 2 платформы iOS от Apple и Google Android. Представьте, что Вам прямо сейчас надо написать мобильное приложение под обе операционные системы. Вам нужно нанять, условно, по 1—3 программиста на каждую платформу. Или по 5, или по 7, в зависимости от сложно проекта. Возьмем число 5 на платформу – оптимальное, на мой взгляд, количество для проекта средней сложности. Это означает 10 программистов в сумме. Из них статистически, будет 2—4 очень хороших, сильных программиста, 2—4 новичков и 2—4 средних по уровню. Если же язык программирования один, и кодовая база одна, значит можно взять из этих же 10 программистов можно взять 5 лучших. Конечно, останется 5 программистов не у дел, но это возможность перемести их на другие участки работы, или дополнительный стимул расти им профессионально. Иными словами, сузив скоуп работ до одной кодовой базы, можно одновременно уменьшить расходы на разработку и увеличить качество. Конечно, это все теория. На практике большинство выбирают нативную разработку и зачастую оправдано, поскольку только она дает максимальное качество конечного продукта. Но зачастую – не значит всегда. Рассмотрим когда и как можно применить Flutter. Почему Flutter? Если Вы думаете, стоит ли Вам браться за кросс-платформу и конкретно за Flutter, ответьте себе на вопрос: зачем нам нужно это приложение, какие бизнес-цели мы с помощью него решаем? Сравните свой ответ с двумя абзацами ниже и решите к какому относится ваше приложение в большей степени. Для начала определим, в каких случаях Flutter не очень хорошо подходит. Если кратко, то это все кейсы, когда приложение представляет собой конечный продукт и будет конкурировать с другими такими продуктами в магазине приложений за топовые позиции. Например, это может быть новая Angry Birds, рисовалка, читалка, фитнес-приложение. Вам нужна будет максимальная скорость, точность и плавность при работе приложения, и это все дает только нативка. Также следует выделить категорию приложений, в которых планируется активно использовать встроенные в устройства датчики, такие как Bluetooth, гироскопы, камеру. Это конечно, не значит, что Flutter нельзя использовать в перечисленных случаях. Но высока вероятность, что вам так или иначе придется писать нативный код и/или костыли. С другой стороны, существует множество кейсов, когда реальный бизнес желает получить мобильное приложение, которое будет помогать им в реализации бизнес-процессов и/или дополнять их, но без фанатичной погони за модным супер-быстродействующим UI. В качестве примера можно привести программы лояльности, мобильное рабочее место для сотрудников, интернет-магазин, а также многие другие, где приложение будет обслуживать реальный бизнес-процесс. Резюмируя, небольшие приложения с оффлайновым бизнесом можно и нужно создавать на Flutter, а сам framework рекомендуется к изучению всем мобильным разработчикам. Настраиваем рабочее окружение Теперь, когда мы разобрались, в каких случаях мы можем использовать Flutter, давайте уже научимся им пользоваться! Для начала, установим Flutter SDK. Скачайте архив с SDK с (официального сайтаhttps://flutter.dev/docs/get-started/install (https://flutter.dev/docs/get-started/install)) Выберите Вашу платформу (Windows, Mac, Linux) и следуйте инструкции. После распаковки архива добавьте в PATH Flutter/bin export PATH=«$PATH:`pwd`/flutter/bin» // Maс Здесь может потребоваться перезапустить компьютер. После установки в командной строке запустите команду flutter doctor и убедитесь, что у Вас все установлено корректно. Если планируете собирать и тестировать под iOS, то необходимо установить и обновить Xcode и соответсвующие пакеты с помощью brew следуя подсказке в ответе flutter doctor, а также следовать инструкции для macos (https://flutter.dev/docs/get-started/install/macos) https://flutter.dev/docs/get-started/install/macos) (https://flutter.dev/docs/get-started/install/macos)) Результаты команды flutter doctor с ошибками Если планируете тестировать на Android устройстве, то используйте Android Studio. Если у Вас нет Android Studio, следуйте по установке (инструкцииhttps://developer.android.com/studio/install (https://developer.android.com/studio/install)) чтобы установить ее. Запускаем Hello World! На Android Итак, приступим к созданию первого приложения на Flutter. Для этого круса вы также можете использовать Android Studio, XCode или VS Code – как вам удобно. Мы будем рассматривать на примере Android Studio. Запускайте Android Studio и выберите Start a new Flutter project Интерфейс создания нового проекта Выберите Flutter Application Заполните имя flutter_hello_world в поле Project Name company domain – flyflutter.ru И жмем Finish После запуска мы сразу видим открытый файл main. dart В нем видим строчку void main () => runApp (MyApp ()); это начальная точка приложения. Функция main () – это стартовая точка всех приложений на языке Dart. В ней мы здесь вызываем конструктор класса MyApp, который наследуется от StatelessWidget – это тип UI компонента – виджета. Подробнее про язык Dart мы поговорим во второй лекции, а про виджеты – в третьей. Итак, слева мы видим дерево проекта, справа – редактор. Код main. dart только что созданного проекта Весь общий для Android и iOS код находится в папке lib. Сейчас у нас там только файл main. dart Android Studio сгенерировала простую логики инкриментирования, мы ее пока удалим, чтобы она нас не путала, и заменим на более простой вариант import ’package: flutter/material. dart’; void main () => runApp (MyApp ()); class MyApp extends StatelessWidget { @override Widget build (BuildContext context) { return MaterialApp ( title: «Flutter Demo’, theme: ThemeData ( primarySwatch: Colors. blue,), home: Scaffold ( appBar: AppBar ( title: Text («This is Flutter’),), body: Center ( child: Text («Hello World!»),),),); } } И жмите на иконку молнии – Hot Reload – для применения изменений. Надо отметить, что Hot Reload во Flutter работает действительно быстро и значительно сокращает время разработки. Ура, на экране вы должны увидеть Привет Мир! Привет Мир! на эмуляторе Рассмотрим код подробнее. Как уже говорилось выше, MyApp наследуется от StatelessWidget, это неизменяемый UI компонент – виджет. Вообще, все во Flutter – это виджеты, и приложение тоже. В виджете мы переопределяем метод build, в котором указывается что и как отрисовать. В нашем примере мы возвращаем объект MaterialApp, который создаем посредсвом конструктора. А в конструктор передаем название, тему и виджет home, которому назначем Scaffold – скелет приложения, который в своб очередь содержит appBar и body. Здесь уместна аналогия с HTML, где также есть тайтлы и body. Давайте немного увеличим текст и поиграем цветами: home: Scaffold ( backgroundColor: Colors.red, appBar: AppBar ( title: Text («This is Flutter’),), body: Center ( child: Text («Hello World!», style: TextStyle ( fontSize: 42.0, // делаем текст большим fontWeight: FontWeight.bold, // жирным color: Colors. white, // белым ) ), ), ), Виджету Scaffold мы задали красный фон, а виджету текста применили стиль, чтобы сделать его больше и заметнее. Привет, Мир! на Андроид Преимущество Flutter в том, что вся логика работы с внешним видом приложения (UI) прописывается в коде на том же языке, что и бизнес-логика – на dart. Нет необходимости залезать в папку с ресурсами и редактировать xml верстку. Запускаем Hello World на iOS Мы же пишем кроссплатформенный код! Давайте запустим созданное приложение на iOS девайсе. Для этого просто выберите подключенный iOS девайс или эмулятор в dropdown списке и нажмите запустить. Конец ознакомительного фрагмента. Текст предоставлен ООО «ЛитРес». Прочитайте эту книгу целиком, купив полную легальную версию (https://www.litres.ru/andrey-aleev/bystryy-start-flutter-razrabotchika/?lfrom=334617187) на ЛитРес. Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
КУПИТЬ И СКАЧАТЬ ЗА: 490.00 руб.