На этой странице

Когда выбирать Flutter

  1. 1Constraints и деревья
  2. 2Архитектура
  3. 3Данные и тесты
  4. 4Профиль и доступность
ЭтапЧто получится
Constraints и деревьяОбъяснить layout и обновление UI
АрхитектураРазделить экран, состояние и источники данных
Данные и тестыПроверить миграции и пользовательские сценарии
Профиль и доступностьНайти узкое место и проверить доступность

Flutter подходит, если вы хотите писать интерфейс на Dart и пользоваться его UI-фреймворком на нескольких платформах. Если Dart незнаком, сначала разберите основы языка и асинхронности; раздел про VM можно оставить на потом. Для локальной сборки iOS понадобится macOS с Xcode.

Интерфейс и устройство фреймворка

Flutter Learning Pathway

официальный маршрут для старта

Подходит, когда Dart уже знаком, а Flutter пока нет: последовательные упражнения и небольшие приложения вместо случайного порядка виджетов. Это вводный практикум, после которого стоит расширять программу обучения. После освоения основных экранов переходить к следующим пунктам — там начинается более интересная часть.

Справочный ID 23Начните здесь

Understanding Constraints

один из первых материалов для чтения

Объясняет, откуда берутся размеры элементов и почему width: 100 не всегда означает фактическую ширину 100. Row, Column, Expanded, Flex, ограничения и неограниченное пространство. После него вёрстка становится системой правил, а не ритуалом «оберни ещё в один Container и попробуй Expanded».

Справочный ID 24Начните здесь

Architectural Overview + Inside Flutter

как работает сам фреймворк

Связь Widget, Element и RenderObject, обновление дерева, layout, ключи, slivers и ленивое построение. Первый материал даёт карту системы, второй раскрывает алгоритмические решения. Это не руководство по раскладыванию приложения на папки: это объяснение механики, на которой держится интерфейс.

Архитектура и платформенная интеграция

Справочный ID 25Начните здесь

App Architecture + Compass Case Study

архитектура с работающим примером

Документация объясняет views/view models, repositories/services, зависимости и тестирование; рядом доступен исходный код Compass. Это пример одного связного решения, а не обязательный шаблон: начинайте с простых границ и добавляйте слои по мере появления причин.

Platform Channels и Pigeon

связь с Kotlin/Java/Swift

Открывайте этот раздел, если нужный API Android/iOS не покрывает подходящий пакет. Документация объясняет сообщения между Dart и платформенным кодом и типизированные bindings через Pigeon. Это отдельная граница интеграции с платформой; dart:ffi предназначен для другого класса нативного взаимодействия.

Riverpod Docs + Testing Providers

управление состоянием с тестируемыми зависимостями

Брать не только стартовый пример, но и жизненный цикл providers, disposal, зависимости и overrides в тестах. Именно эти темы показывают, зачем библиотека нужна помимо замены setState. Синтаксис обязательно сверять с текущими руководствами: статья под старую major-версию — не надёжный источник актуального API.

Bloc: Flutter Todos

полноценный учебный пример событий и состояний

Не очередной counter: есть слой данных, repository, изменения списка, фильтрация и тесты. Его полезно разбирать как альтернативную модель организации логики и сравнивать с Riverpod по конкретным задачам. Необязательно заранее осваивать оба фреймворка до совершенства: полезнее понять, что именно каждый делает явным.

Производительность и тесты

Performance Best Practices + DevTools Performance

профилирование до оптимизации

Работа UI- и raster-частей кадра, лишние build/layout/paint, стоимость графических операций и временные трассы. Важная практическая деталь: debug-сборка не подходит для репрезентативной оценки производительности, нужен соответствующий режим профилирования. Полезно, когда хочется заменить «Flutter почему-то тормозит» конкретной измеренной причиной.

Testing Overview

разобраться, что именно проверять

Unit-, widget- и integration-тесты, их стоимость и границы. Читать не ради определения трёх терминов, а ради выбора подходящего уровня проверки. Например, тест бизнес-правила и сценарий взаимодействия с реальным устройством не должны автоматически становиться одинаковыми тяжёлыми end-to-end-тестами. В документе есть переходы к практическим руководствам.

Patrol

когда тест выходит за пределы Flutter-дерева

Для сценариев с системными разрешениями, уведомлениями и нативными элементами интерфейса. Важное отличие: официальный integration_test сам по себе не умеет взаимодействовать со всем таким UI; документация Flutter отдельно указывает на Patrol для этих задач. Изучать после widget-тестов, а не пытаться заменить им вообще всё тестирование.

Данные и качество продукта

Справочный ID 32Начните здесь

Drift + Migrations

локальные данные без «потом разберёмся»

Типизированные запросы, реактивные выборки, транзакции и изменение схемы базы. Особенно ценная часть — миграции вместе с тестированием сохранности данных, а не первый SELECT. В руководстве есть инструменты генерации миграций и тестов. Отличный следующий шаг после демо, которое умеет только сходить в HTTP API.

LocalSend

читать код настоящего кроссплатформенного продукта

Передача файлов между устройствами, сетевой протокол, платформенные различия и реальная структура проекта. При опыте работы с сетями особенно интересен переход от UI к обнаружению устройств и передаче данных. Сборку делать на зафиксированном проектом Flutter, а не на случайном последнем: README прямо предупреждает о несовпадении версий.

Flutter Accessibility

качество интерфейса за пределами красивого скриншота

Экранные дикторы, подписи элементов, масштабирование текста, контраст и удобство нажатий. Здесь есть практический checklist перед выпуском. Это часть базового понимания мобильного UI: приложение должно оставаться пригодным к использованию при другом размере текста и способе взаимодействия, а не только на устройстве автора.

Дальше

Проверьте поведение приложения при потере сети и закрытии процесса. Для Android пригодится платформенный маршрут, перед релизом — безопасность и выпуск.

Материалы могут обновляться. Проверяйте требования к версиям перед началом работы.