Кроссплатформенная мобильная разработка на Flutter
Форма обучения: очная с применением дистанционных технологий
Объем программы: 40 занятий по 4 ак.ч.
Выдаваемый документ: Удостоверение о повышении квалификации МФТИ

Содержание программы:
**Модуль 1. Основы Dart и ООП**
- Введение
- Dart как язык программирования
- Типы данных, функции, конструкторы, операции
- Приведение типов
- Null safety
- Исключения
- Коллекции и циклы
- Асинхронное программирование в Dart
- Интерполяция, наследование, полиморфизм
- Object VS dynamic
**Модуль 2. Введение во Flutter**
- Что такое Flutter и как он работает
- Достоинства и недостатки Flutter
- Установка и настройка Flutter
- Структура проекта Flutter
- Статический анализатор
- Подключение пакетов, ассетов, шрифтов
- Архитектура мобильных приложений
**Модуль 3. Типы виджетов во Flutter**
- StatelessWidget, StatefulWidget отличия
- Жизненный цикл StatefulWidget
- Widget, Element, RenderObject
- Что такое BuildContext
- Ключ виджета, что это и зачем нужен
- InheritedWidget, Theme, MediaQuery
- CustomPaint виджет
**Модуль 4. Работа с сетью**
- Разбор пакета http
- Разбор пакета json_serializable
- Разбор пакета chopper, chopper_generator
- Swagger формат, swagger_dart_code_generator
- Особенности работы с Web, CORS
- FutureBuilder, StreamBuilder виджеты
**Модуль 5. Работа с анимациями**
- отличие Implicit и Explicit анимаций
- Примеры Implicit анимаций
- Разбор классов Tween, AnimationController, Animation
- Виджет AnimatedBuilder
- CurvedAnimation и создание собственных Curves
**Модуль 6. Навигация в приложении**
- Класс Navigator и Router
- Типы роутов
- MaterialPageRoute, CupertinoPageRoute
- Создание собственной анимации роута
- Вложенная навигация
- Navigator 2.0
- Перехватывание системной кнопки "назад"
- Связь навигации и url браузера
**Модуль 7. Навигация в приложении**
- Класс Navigator и Router
- Типы роутов
- MaterialPageRoute, CupertinoPageRoute
- Создание собственной анимации роута
- Вложенная навигация
- Navigator 2.0
- Перехватывание системной кнопки "назад"
- Связь навигации и url браузера
**Модуль 8. State management**
- Что такое State management и зачем он нужен
- Классы ValueNotifier, ChangeNotifier
- Bloc, Redux, Provider
- Подробнее о Provider
- Подробнее о Bloc
- Пакет freezed
**Модуль 9. Мультиплатформенные решения**
- Адаптивный дизайн и адаптивные виджеты
- Разделение дизайна по платформам
- Работа с мышью и касаниями
- Работа с Focusable и AndroidTv
- Работа с Flutter for Desktop
- Работа с Flutter for Web
- Web renderers
**Модуль 10. Работа с данными**
- Способы хранения данных
- Локальное хранилище
- Базы данных и их типы
- shared_preferences, sqflite
- drift и floor базы данных
**Модуль 11. Интеграция с платформами**
- Зачем нужна интеграция
- Поддерживаемые типы данных
- Пример реализации MethodChannel
- Способы вызова JS методов
**Модуль 12. Тестирование**
- Зачем нужно писать тесты
- Типы тестов во Flutter
- Unit тесты
- Widget тесты
- Golden тесты
- Зачем нужны Mocks и Fakes
**Модуль 13. Firebase**
- Что такое Firebase
- Настройка Firebase
- Работа с данными в Firebase
- Авторизация в Firebase
- Написание чата с помощью Firebase