async_job и solo
Два входа
Заголовок раздела «Два входа»Отмена асинхронной работы. Future в Dart нельзя отменить.
async_job добавляет асинхронному коду отмену, дочерние задачи
и освобождение ресурсов: отменённая задача останавливается на ближайшей
контрольной точке, выполняет уборку и завершается после своих дочерних задач.
Пакету не нужны ни контроллер, ни Flutter: он работает на сервере, в CLI или
под провайдером riverpod или обработчиком bloc, как показывает страница
«С riverpod и bloc».
Состояние с жизненным циклом. solo — контроллер над одним
неизменяемым состоянием, который выполняет над ним задачи по одной,
с политиками для повторного вызова и правилами о том, в каких состояниях задача
может работать; flutter_solo подключает его к виджетам. Страница
«solo и bloc рядом» разбирает в обоих пакетах одиннадцать
сценариев контроллера.
| Пакет | Что это |
|---|---|
| async_job | Отмена, дочерние задачи и освобождение ресурсов для одной асинхронной операции. Чистый Dart, зависит только от meta. |
| solo | Контроллер поверх async_job: очередь с политиками, правила состояния, дети, накопление. Чистый Dart. |
| flutter_solo | Лицо solo для Flutter: SoloBuilder, ValueListenable, select, listen. |
| async_job_lints | Плагин анализатора: сообщает о частых ошибках в коде на async_job. |
| solo_lints | Плагин анализатора для кода на solo: правила async_job_lints и правила контроллера. |
solo реэкспортирует async_job, а flutter_solo — solo, поэтому
достаточно одной зависимости: async_job, если нужна только отмена, solo или
flutter_solo, если нужен контроллер. Плагины — не зависимости:
в analysis_options.yaml называют один из них, async_job_lints для кода
на async_job или solo_lints, который включает его правила, для кода
на solo.