Маршрут
- 1Типы и синтаксис
- 2Effective Dart
- 3Async и isolates
- 4FFI и VM
| Этап | Что получится |
|---|---|
| Типы и синтаксис | Моделировать данные и состояния |
| Effective Dart | Проектировать понятные интерфейсы |
| Async и isolates | Отличать ожидание от вычисления |
| FFI и VM | Понимать границу Dart и нативного кода |
Язык и стиль
Dart Language
вход с акцентом на отличия языка
При наличии опыта программирования не обязательно долго сидеть на переменных и циклах. Гораздо полезнее внимательно разобрать null safety, generics, records, patterns и class modifiers. Особенно sealed, interface, base и final: это инструменты проектирования API и моделей состояний, а не декоративный синтаксис.
Effective Dart
самый полезный второй материал после синтаксиса
Четыре раздела: Style, Documentation, Usage и Design. Особого внимания заслуживают Usage и Design: как пользоваться языком идиоматично и делать понятные API. Это способ перестать писать на Dart так, будто перед тобой Java или JavaScript с другим расширением файла. Многие рекомендации связаны с проверками анализатора.
Асинхронность и параллелизм
Futures, async, await + Streams
нормальная асинхронная база
Порядок выполнения, ожидание результата, распространение ошибок, обработка потоков событий и различия между типами подписок. Хорошая основа перед сетью, реактивным хранилищем и state management. Для чтения старого callback-кода отдельно полезен разбор ошибок в Future API; авторы прямо отмечают, что это не основной путь для кода на async/await.
Concurrency in Dart
event loop и isolates без магического мышления
Главное — понять разницу между асинхронным ожиданием и параллельным вычислением. async не переносит тяжёлый CPU-код на отдельное ядро. Документ разбирает модель isolates, обмен сообщениями, Isolate.run и более долгоживущих workers. Для сетевого и системного бэкграунда это один из наиболее содержательных материалов во всей Flutter-части.
Нативная граница и VM
C interop using dart:ffi
связка Dart с нативной библиотекой
Вызовы C API, указатели, структуры, нативная память и генерация bindings через ffigen. Особенно релевантно при интересе одновременно к Qt/C++ и Dart. Но FFI не означает «импортировал произвольный C++-класс Qt»: здесь интерфейс строится вокруг C ABI, а для C++ обычно нужен соответствующий внешний слой.
Introduction to Dart VM и runtime/docs
глубокая часть для любителей внутренностей
Модель объектов, GC, snapshots, JIT/AOT, hot reload, async stack traces и анализ размера бинарника. Это документация внутри репозитория SDK, а не пересказ на Medium. Оговорка: вводный README помечен как work in progress и датирован 2022 годом; конкретные детали реализации нужно сверять с тематическими документами и кодом выбранной версии SDK.
Дальше
Проверьте поведение приложения при потере сети и закрытии процесса. Для Android пригодится платформенный маршрут, перед релизом — безопасность и выпуск.