Опубликовано

“Flutter и Dart. Сборник рецептов: Разработка полнофункциональных облачных приложений”

Flutter и Dart. Сборник рецептов

Книга посвящена практическому применению фреймворка 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”.

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