На этой странице
Когда выбирать Dart
| Этап | Что получится |
|---|---|
| Типы и синтаксис | Моделировать данные и состояния |
| Effective Dart | Проектировать понятные интерфейсы |
| Async и isolates | Отличать ожидание от вычисления |
| FFI и VM | Понимать границу Dart и нативного кода |
Начните здесь, если выбрали Flutter или хотите разобраться в Dart отдельно. Для Flutter достаточно пройти основы типов и асинхронности; FFI и внутренности VM — дополнительные темы, когда проекту действительно нужна нативная библиотека или диагностика runtime.
Язык и стиль
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
ожидание, ошибки и поток событий
Изучите, как ожидать один результат, передавать ошибки и подписываться на последовательность событий. Это основа для сетевого слоя и потоковых данных. Разбор ошибок Future API пригодится при чтении callback-кода: документация прямо говорит, что для обычного кода на 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++ обычно нужен соответствующий внешний слой.
Обзор платформы и runtime Dart
понять VM и границу JIT/AOT без привязки к внутренней реализации
Официальный обзор описывает Dart VM на нативных платформах, JIT при разработке, AOT для поставки, сборщик мусора и isolates. Он помогает понять, где заканчивается язык и начинается runtime. Для деталей реализации конкретного релиза переходите к исходникам SDK; внутренняя документация может меняться независимо от этого обзора.
Дальше
Проверьте поведение приложения при потере сети и закрытии процесса. Для Android пригодится платформенный маршрут, перед релизом — безопасность и выпуск.