
Книга посвящена практическому применению фреймворка Flutter и языка программирования Dart. Показан синтаксис Dart, описаны основные структуры языка. Раскрыты принципы создания мобильных и настольных приложений с использованием Flutter для операционных систем Android, iOS, Linux, macOS, Windows и Google Fuchsia. Рассказано о работе с данными и виджетами, об использовании различных решений облачных провайдеров и интегрирации их с приложениями на Flutter. Рассмотрено управление данными через API с помощью Google Cloud. Представлены приемы работы с решениями Firebase, такими как аутентификация и база данных Cloud Firestore.
Для программистов
Рич Роуз показывает наглядные примеры использования языка Dart и фреймворка Flutter для решения практических задач. “Вишенкой на торте” является рассмотрение Firebase и Google Cloud, что позволяет разработчикам быстро создавать качественные приложения.
Роб Эдвардс, технологический руководитель DevOps, Google Cloud UK&I
Отличная книга для всех, кто хочет изучить Dart и Flutter, – от начинающих программистов, делающих первые шаги, до опытных разработчиков, изучающих новые языки и фреймворки.
Алекс Мур, руководитель направления модернизации инфраструктуры, Google Cloud UK&I
Как создаются адаптивные облачные системы
Книга рассказывает об основных принципах использования Flutter и Dart для разработки полнофункциональных приложений, основанных на облачных технологиях.
Фреймворк с открытым исходным кодом Flutter и язык программирования Dart представляют собой единое решение для создания приложений, способных функционировать на разных платформах. Представленные в книге рецепты покажут, как эта комбинация инструментов реализует эффективный подход к разработке кросс-платформенного облачного программного обеспечения. Часто используемый для проектирования фронтендов, Flutter позволяет создавать кросс-платформенные приложения для операционных систем Android, iOS, Linux, macOS, Windows и Google Fuchsia. Dart SDK предоставляет нативный доступ к решениям сторонних разработчиков, включая API, базы данных и средства аутентификации.
Вы научитесь:
- писать эффективный код на Dart, используя переменные и структуры данных;
- создавать приложения с помощью Flutter, изучив виджеты и работу с данными;
- использовать решения облачных провайдеров и интегрировать их с Flutter;
- управлять данными через API с помощью Google Cloud;
- работать с решениями Firebase, такими как аутентификация и база данных Cloud Firestore;
- создавать веб-приложения, работающие с мобильными и настольными платформами.
Книгу “Flutter и Dart. Сборник рецептов: Разработка полнофункциональных облачных приложений” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Вступительное слово………………………………………………………………………………… 9
Предисловие…………………………………………………………………………………………… 10
Кто должен прочитать эту книгу……………………………………………………………………………………………… 10
Почему я написал эту книгу……………………………………………………………………………………………………… 11
Как организована эта книга……………………………………………………………………………………………………… 11
Соглашения об используемых обозначениях…………………………………………………………………………. 12
Онлайн-обучение O’Reilly…………………………………………………………………………………………………………. 12
Наши контакты………………………………………………………………………………………………………………………….. 12
Благодарности…………………………………………………………………………………………………………………………… 13
Глава 1. Переменные Dart……………………………………………………………………… 14
1.1. Выполнение приложения Dart……………………………………………………………………………………………. 14
1.2. Работа с целыми числами………………………………………………………………………………………………….. 15
1.3. Работа с дробными числами……………………………………………………………………………………………… 17
1.4. Работа с логическими значениями…………………………………………………………………………………….. 17
1.5. Работа со строками…………………………………………………………………………………………………………….. 18
1.6. Вывод информации на консоль…………………………………………………………………………………………. 19
1.7. Работа с постоянной переменной (на этапе компиляциии)…………………………………………….. 20
1.8. Работа с постоянной переменной (на этапе выполнения)………………………………………………. 20
1.9. Работа с null-значениями……………………………………………………………………………………………………. 21
Глава 2. Управление потоком………………………………………………………………… 23
2.1. Проверка выполнения условия………………………………………………………………………………………….. 23
2.2. Неопределенная итерация…………………………………………………………………………………………………. 24
2.3. Перебор набора элементов………………………………………………………………………………………………… 26
2.4. Выполнение условных действий, основанных на значении…………………………………………… 27
2.5. Использование перечислений……………………………………………………………………………………………. 29
2.6. Реализация обработки исключений………………………………………………………………………………….. 30
Глава 3. Использование функций………………………………………………………….. 32
3.1. Объявление функций…………………………………………………………………………………………………………… 32
3.2. Добавление параметров…………………………………………………………………………………………………….. 33
3.3. Использование необязательных параметров…………………………………………………………………… 34
3.4. Возвращаемые значения…………………………………………………………………………………………………….. 35
3.5. Объявление анонимных функций………………………………………………………………………………………. 36
3.6. Добавление функциональной задержки с помощью класса Future……………………………….. 37
Глава 4. Структуры List и Map……………………………………………………………….. 39
4.1. Создание списков данных List…………………………………………………………………………………………… 39
4.2. Внесение изменений в список…………………………………………………………………………………………….. 41
4.3. Использование в списке данных разных типов………………………………………………………………… 42
4.4. Работа с парами “ключ/значение” в структуре Map……………………………………………………….. 43
4.5. Вывод данных из структуры Map……………………………………………………………………………………… 45
4.6. Проверка наличия содержимого в структуре Map…………………………………………………………… 46
4.7. Вывод сложных типов данных………………………………………………………………………………………….. 46
Глава 5. Объектно-ориентированный Dart…………………………………………….. 48
5.1. Введение в объектно-ориентированный Dart…………………………………………………………………… 48
5.2. Создание класса………………………………………………………………………………………………………………….. 49
5.3. Инициализация класса с помощью конструктора…………………………………………………………… 51
5.4. Наследование классов……………………………………………………………………………………………………….. 52
5.5. Интерфейс класса……………………………………………………………………………………………………………….. 54
5.6. Класс Mixin………………………………………………………………………………………………………………………….. 57
Глава 6. Тестирование приложений Dart……………………………………………….. 60
6.1. Добавление тестирующего пакета к вашему приложению…………………………………………….. 61
6.2. Создание пробного теста приложения……………………………………………………………………………… 62
6.3. Выполнение тестов в вашем приложении…………………………………………………………………………. 63
6.4. Группировка нескольких тестов………………………………………………………………………………………… 65
6.5. Добавление фиктивных тестовых данных………………………………………………………………………… 68
Глава 7. Знакомство со средой разработки Flutter………………………………….. 70
7.1. Макетирование интерфейса приложения…………………………………………………………………………. 70
7.2. Создание шаблонного проекта Flutter………………………………………………………………………………. 72
7.3. Удаление баннера отладки Flutter…………………………………………………………………………………….. 74
7.4. Знакомство с виджетами…………………………………………………………………………………………………….. 75
7.5. Дерево виджетов Flutter………………………………………………………………………………………………………. 76
7.6. Улучшение производительности рендеринга виджета……………………………………………………. 77
Глава 8. Ассеты……………………………………………………………………………………… 79
8.1. Использование файла pubspec.yaml………………………………………………………………………………….. 79
8.2. Добавление папки ассетов…………………………………………………………………………………………………. 81
8.3. Ссылка на изображение……………………………………………………………………………………………………… 82
8.4. Встраивание пакета шрифтов Google……………………………………………………………………………….. 83
8.5. Импорт пакета…………………………………………………………………………………………………………………….. 84
Глава 9. Работа с виджетами………………………………………………………………….. 86
9.1. Создание виджета без сохранения состояния………………………………………………………………….. 86
9.2. Создание виджета с сохранением состояния…………………………………………………………………… 88
9.3. Рефакторинг виджетов Flutter…………………………………………………………………………………………….. 91
9.4. Использование класса Scaffold………………………………………………………………………………………….. 94
9.5. Добавление панели приложения AppBar………………………………………………………………………….. 96
9.6. Использование контейнера………………………………………………………………………………………………… 98
9.7. Центрированный виджет………………………………………………………………………………………………….. 101
9.8. Виджет SizedBox……………………………………………………………………………………………………………….. 102
9.9. Виджет Column………………………………………………………………………………………………………………….. 105
9.10. Виджет Row……………………………………………………………………………………………………………………… 109
9.11. Виджет Expanded……………………………………………………………………………………………………………. 111
Глава 10. Разработка интерфейсов пользователей………………………………… 114
10.1. Использование пакета шрифтов Google………………………………………………………………………… 114
10.2. Встраивание виджета RichText……………………………………………………………………………………… 116
10.3. Идентификация хост-платформы………………………………………………………………………………….. 117
10.4. Использование виджета Placeholder…………………………………………………………………………….. 119
10.5. Использование виджета LayoutBuilder…………………………………………………………………………. 121
10.6. Доступ к размерам экрана с помощью MediaQuery…………………………………………………….. 125
Глава 11. Организация данных на экране……………………………………………. 128
11.1. Реализация вертикального списка ListView………………………………………………………………….. 129
11.2. Реализация горизонтального списка ListView……………………………………………………………… 131
11.3. Виджет SliverAppBar………………………………………………………………………………………………………. 134
11.4. Виджет SliverList…………………………………………………………………………………………………………….. 136
11.5. Виджет GridView…………………………………………………………………………………………………………….. 140
11.6. Виджет SnackBar (всплывающих уведомлений)………………………………………………………….. 143
Глава 12. Межстраничная навигация Flutter………………………………………… 146
12.1. Добавление императивной межстраничной навигации………………………………………………. 146
12.2. Добавление декларативной межстраничной навигации…………………………………………….. 150
12.3. Использование выдвижной панели навигации Navigation Drawer…………………………….. 154
12.4. Работа с вкладками………………………………………………………………………………………………………… 158
12.5. Добавление нижней навигационной панели………………………………………………………………… 162
12.6. Использование ключей для передачи информации…………………………………………………….. 164
Глава 13. Работа с ассетами данных…………………………………………………….. 167
13.1. Стратегический подход к получению данных…………………………………………………………….. 168
13.2. Рефакторинг данных………………………………………………………………………………………………………. 169
13.3. Генерация классов Dart из структур JSON……………………………………………………………………. 171
13.4. Асинхронное использование локальных данных JSON………………………………………………. 174
13.5. Использование набора данных JSON из папки ассетов………………………………………………. 178
13.6. Доступ к удаленным данным JSON……………………………………………………………………………….. 181
Глава 14. Тестирование пользовательского интерфейса
с помощью Flutter………………………………………………………………………………… 184
14.1. Автоматизированное тестирование виджетов Flutter………………………………………………….. 184
14.2. Автоматизированное тестирование виджетов……………………………………………………………… 187
14.3. Интеграционное тестирование с помощью Flutter Driver…………………………………………….. 188
14.4. Тестирование совместимости с устройствами на Android/iOS…………………………………… 189
Глава 15. Firebase и Flutter…………………………………………………………………… 192
15.1. Использование платформы Firebase совместно с Flutter……………………………………………… 192
15.2. Настройка проекта Firebase…………………………………………………………………………………………… 194
15.3. Настройка Firebase SDK для локальной разработки…………………………………………………… 196
15.4. Конфигурация эмуляторов Firebase………………………………………………………………………………. 198
15.5. Добавление в среду разработки пакета flutterfire_cli…………………………………………………. 200
15.6. Интеграция с базой данных Firebase…………………………………………………………………………….. 202
15.7. Запись в облачную базу данных Firestore…………………………………………………………………….. 205
15.8. Чтение из облачной базы данных Firestore…………………………………………………………………… 209
15.9. Добавление аутентификации Firebase в приложение Flutter……………………………………….. 214
15.10. Использование веб-приложения Flutter с Firebase Hosting………………………………………… 219
Глава 16. Введение в облачные сервисы………………………………………………. 221
16.1. Начало работы с провайдерами облачных сервисов…………………………………………………. 221
16.2. Работа с идентификационными данными и управлением доступом…………………………. 222
16.3. Использование облачного хранилища для размещения объекта………………………………. 224
16.4. Разработка HTTP-сервера с помощью Dart………………………………………………………………….. 225
16.5. Создание контейнера Dart……………………………………………………………………………………………… 227
16.6. Внедрение бессерверности с помощью Dart………………………………………………………………… 228
Глава 17. Начинаем разработку игр……………………………………………………… 230
17.1. Добавление пакета Flame к Flutter………………………………………………………………………………… 231
17.2. Создание шаблона Flame………………………………………………………………………………………………. 232
17.3. Добавление спрайта……………………………………………………………………………………………………….. 233
17.4. Добавление к спрайту ручного горизонтального перемещения………………………………… 235
17.5. Добавление автоматического вертикального перемещения спрайта………………………… 238
17.6. Добавление обнаружения столкновений……………………………………………………………………… 241
17.7. Добавление рендеринга текста……………………………………………………………………………………… 244
17.8. Добавление графических примитивов………………………………………………………………………….. 248
17.9. Добавление звуковых эффектов…………………………………………………………………………………….. 253
Приложение. Настройка среды разработки………………………………………….. 260
Определение варианта установки Dart………………………………………………………………………………….. 260
Использование DartPad…………………………………………………………………………………………………………… 261
Установка среды разработки Flutter………………………………………………………………………………………. 262
Использование Flutter Doctor………………………………………………………………………………………………….. 262
Установка Dart SDK…………………………………………………………………………………………………………………. 264
Разработка с использованием VS Code…………………………………………………………………………………. 264
Расширение Android Studio для поддержки Dart…………………………………………………………………… 265
Выбор канала выпуска……………………………………………………………………………………………………………. 265
Использование конфигуратора Flutter для установки целевой платформы……………………….. 266
Предметный указатель…………………………………………………………………………. 268
Об авторе……………………………………………………………………………………………… 271
Об изображении на обложке………………………………………………………………… 271

Ричард Роуз — архитектор лаборатории Google Cloud, специализирующийся на инженерных платформах, Kubernetes и бессерверных технологиях. Автор книги “Hands-On Serverless Computing with Google Cloud”.
