Учебник Flutter и Dart для начинающих
Полный путь от нуля до собственного мобильного приложения на Flutter и языке Dart 3. Курс построен по принципу прочного фундамента: сначала вы осваиваете язык Dart с его звёздной null-safety и новинками 2025 года — records, паттернами и sealed-классами, — затем переходите к фреймворку.
Вы разберёте дерево виджетов, два базовых типа виджетов и их жизненный цикл, научитесь верстать экраны через Row, Column и списки, оживлять их через setState и современные стейт-менеджеры (Provider, Riverpod), а в финале — настраивать навигацию через go_router и загружать реальные данные из сети с помощью FutureBuilder. Каждый урок содержит наглядные ASCII-схемы, запускаемые примеры логики и проверочные вопросы.
Курс «Flutter и Dart» состоит из 6 разделов и 24 уроков: Основы Dart, Коллекции и ООП, Введение во Flutter, Виджеты и вёрстка, Состояние и Навигация и данные. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Основы Dart
- Что такое Dart и Flutter и зачем они вместе
Знакомство с языком Dart 3 и фреймворком Flutter: зачем они нужны, как связаны и где применяются в 2025 году.
- Переменные, типы и null-safety
Переменные в Dart: var, final, const, базовые типы и звёздная фича языка — sound null-safety с операторами ? и !.
- Функции, стрелочный синтаксис и параметры
Функции в Dart: позиционные и именованные параметры, значения по умолчанию, required и компактный стрелочный синтаксис.
- Условия, циклы и switch-выражения
Управление потоком в Dart: if/else, циклы for и while, тернарный оператор и современные switch-выражения Dart 3.
- Что такое Dart и Flutter и зачем они вместе
2 Коллекции и ООП
- Списки, множества и карты
Коллекции Dart: List, Set и Map — как хранить наборы данных, обращаться к элементам и выбирать подходящую структуру.
- Обработка коллекций: map, where, и итерируемые
Функциональная обработка коллекций в Dart: map, where, reduce, fold и spread-оператор для трансформации данных.
- Классы, объекты и конструкторы
Основы ООП в Dart: классы и объекты, поля и методы, конструкторы с сокращённым синтаксисом this и именованные конструкторы.
- Наследование, миксины и абстрактные классы
ООП в Dart глубже: наследование через extends, переопределение методов, абстрактные классы и переиспользование кода миксинами.
- Records, patterns и sealed-классы Dart 3
Современный Dart 3: records для возврата нескольких значений, деструктуризация через patterns и исчерпывающие sealed-классы.
- Списки, множества и карты
3 Введение во Flutter
- Всё есть виджет: дерево виджетов
Главная идея Flutter: всё на экране — это виджет. Как виджеты складываются в дерево и как Flutter превращает его в картинку.
- StatelessWidget и метод build
StatelessWidget — неизменяемый виджет: что такое метод build, роль BuildContext и когда виджет перестраивается.
- StatefulWidget и жизненный цикл
StatefulWidget: внутренняя память виджета, метод setState и полный жизненный цикл от initState до dispose.
- MaterialApp, Scaffold и структура экрана
Каркас Flutter-приложения: MaterialApp, Scaffold, AppBar и body — как устроена типовая структура экрана.
- Всё есть виджет: дерево виджетов
4 Виджеты и вёрстка
- Row, Column и Flex-вёрстка
Основа вёрстки Flutter: Row и Column, главная и поперечная оси, mainAxisAlignment и crossAxisAlignment.
- Container, Padding и отступы
Контейнеры и отступы: Container, Padding, EdgeInsets, SizedBox и Margin — как управлять размерами и пространством.
- Списки: ListView и ListView.builder
Прокручиваемые списки во Flutter: ListView, ListView.builder для длинных данных и ленивая отрисовка элементов.
- Карточки, иконки, кнопки и изображения
Готовые виджеты Material: Card, Icon, кнопки (ElevatedButton, TextButton) и работа с изображениями Image.
- Row, Column и Flex-вёрстка
5 Состояние
- setState и поток перестроения
Как работает setState: поток от изменения данных к перестроению дерева и кадру на экране.
- Поднятие состояния и передача данных
Поднятие состояния (lifting state up): где хранить общие данные, как передавать вниз и поднимать события через колбэки.
- Современное управление состоянием: Provider и Riverpod
Обзор стейт-менеджмента 2025: зачем нужны Provider, Riverpod и Bloc, и как они решают проблему передачи данных через дерево.
- setState и поток перестроения
6 Навигация и данные
- Навигация между экранами и стек маршрутов
Навигация во Flutter: Navigator, push и pop, стек маршрутов и передача данных между экранами.
- Именованные маршруты и go_router
Декларативная навигация: именованные маршруты и пакет go_router для глубоких ссылок, параметров и редиректов в 2025.
- Асинхронность: Future, async и await
Асинхронный Dart: Future, async/await, обработка ошибок и почему сетевые операции не блокируют интерфейс.
- Загрузка данных из сети и FutureBuilder
Работа с реальными данными: HTTP-запросы, парсинг JSON, FutureBuilder и отображение состояний загрузки и ошибки.
- Навигация между экранами и стек маршрутов