Flutter использует однопоточную модель выполнения для пользовательского интерфейса.
Основные компоненты модели выполнения:
- UI Thread (или Isolate): Главный поток, где выполняется весь код на Dart, строятся виджеты, обрабатываются жесты и происходит рендеринг.
- Platform Channel: Механизм для взаимодействия кода на Dart с нативными API платформы (Android/iOS). Обмен данными происходит асинхронно.
- Event Loop: Цикл обработки событий в UI Thread. Обрабатывает:
- Пользовательский ввод.
- Таймеры.
- Результаты асинхронных операций (например, сетевых запросов).
- События рендеринга.
- Async/Await: Языковые конструкции в Dart для неблокирующих операций. Позволяют выполнять длительные задачи, не замораживая UI Thread.
- Isolates: Независимые рабочие единицы, которые могут выполнять код Dart параллельно с UI Thread. Используются для выполнения тяжелых вычислений, чтобы не блокировать UI. Они не делят память напрямую с UI Thread; взаимодействие происходит через сообщения (порты).
Пример использования async/await
для неблокирующей операции:
dart