Список изменений
Не выпущено
Заголовок раздела «Не выпущено»pubspec.yamlназывает сайт документации, и pub.dev ссылается на него.
Этот пакет реэкспортирует solo, а через него и async_job, поэтому их
изменения принадлежат и этому пакету: см.
список изменений solo
и список изменений async_job.
Ломающие изменения
Заголовок раздела «Ломающие изменения»ctx.waitизasync_job, устаревший с 0.3.0 в пользуctx.abandonable, удалён.Policy.replaceизsoloпереименован вPolicy.keepLatest.HandlerCancelReasonизasync_jobпереименован вBodyCancelReason, а егоnameтеперьbody, а неhandler.SoloContext.eachизsoloвозвращаетSoloJob<void>, как иSoloContext.child.
Документация
Заголовок раздела «Документация»- README говорит, в каком выпуске с версии 1.0.0 выходит каждое изменение: исправление в патч-выпуске, добавление в минорном, ломающее в мажорном.
- README называет плагин анализатора
solo_lintsв разделе «Установка» и велит проверять его черезdart analyze: начиная с Flutter 3.44flutter analyzeне показывает ни одной его диагностики. - README говорит, что новое значение перечисления или новый подкласс
запечатанного класса выходит в мажорном выпуске и что на
close()работающая задача сcancellable: falseдоходит до конца, а ждущая в очереди снимается. - Страница о миксинах говорит, что
await forпоstreamдержитclose()сSoloStream, сSoloListenableили без него.
Ломающие изменения
Заголовок раздела «Ломающие изменения»- Нижняя граница SDK — Flutter 3.38.1 с Dart 3.10.0, прежде была Flutter 3.27.0 с Dart 3.6.0.
Документация
Заголовок раздела «Документация»- README называет ошибки, которых ждёт
load, и кнопка больше не зовётignoreFailure().
Этот пакет реэкспортирует solo, а через него и async_job, поэтому их
изменения принадлежат и этому пакету: см.
список изменений solo
и список изменений async_job.
Этот пакет реэкспортирует solo, а через него и async_job, поэтому их
изменения принадлежат и этому пакету: см.
список изменений solo
и список изменений async_job.
Этот пакет реэкспортирует solo, а через него и async_job, поэтому их
изменения принадлежат и этому пакету: см.
список изменений solo
и список изменений async_job.
Ломающие изменения
Заголовок раздела «Ломающие изменения»- В
soloSolo.onErrorстал уведомлением, а за ошибку, которой больше ни у кого нет, отвечает новыйSolo.onUnanswered: за ту, которой не несёт ни один исход, и заFailed, который никто не наблюдает. ЗаданныйSolo.observerили переопределениеonError, которое не зовётsuper, больше не удерживают такую ошибку от зоны: см. ту же запись в списке измененийsolo. Job.ignore()переименован вJob.ignoreFailure()вasync_job.- В
soloSolo.runпереименован вenqueue, аSolo.add— вenqueueJob. См. ту же запись в списке измененийsolo. - В
soloобработчики состояния уenqueueиjobпереименованы:onErrorвifFailed,onCancelвifCancelled. ctx.runиctx.runAllпринимаютChildJobвasync_job, аSoloJobизsolo— этоChildJob: помощник, который возвращаетjob(...)дляctx.run, объявляетсяSoloJob<T>, а неJob<T>.SoloListenableстал миксином наSolo, какSoloStreamвsolo:extends SoloListenable<S>становитсяextends Solo<S> with SoloListenable. См. «Контроллер какValueListenable».SoloListenableбольше не несёт стрим. Контроллер, чейstreamкто-то читает, подмешивает оба миксина,with SoloStream, SoloListenable. См. «Контроллер с обеими доставками».- В
soloсинхронное чтение контроллера называетсяcurrentState, а неstate. ValueListenableбольше не реэкспортируется. Файл, который называет этот тип, импортируетpackage:flutter/foundation.dart.closeпринимает новыйSoloCloseModeизsolo.publishбольше не публичный член контроллера сSoloListenable.- Слушатели отбрасываются, когда движок заканчивает закрытие, сразу после
onCloseнаблюдателя иonCloseсамого контроллера. Пишите последнее состояние синхронно, вonCloseконтроллера.
Устарело
Заголовок раздела «Устарело»ctx.waitвasync_jobустарел, его заменяетctx.abandonable; старое имя уйдёт в следующем выпуске.
Что вы увидите после обновления
Заголовок раздела «Что вы увидите после обновления»- О слушателе, который бросает, сообщается через
FlutterError.reportError, как о таком сообщаетChangeNotifier, и его ошибка больше не вылетает изemitилиexternalSetState, которые сделали изменение: задача, чей это былemit, заканчиваетсяDoneтам, где раньше заканчиваласьFailed. - Ошибки, которые
0.2.0оставляла хукам, доходят доSolo.unansweredHandlerили до зоны: см. тот же заголовок в списке измененийsolo.
Добавлено
Заголовок раздела «Добавлено»SoloBuilder: то же, чтоValueListenableBuilder, для контроллера, который не реализуетValueListenable. См. «Как пользоваться».SoloSelection<S, T>: проекция, то естьValueListenableодного значения, выбранного из другого, который уведомляет, только когда это значение меняется. Для контроллера, который не реализуетValueListenable, её создаётSoloSelection.from. См. «Выбор одного значения».SoloSelector, виджет, который выбирает за вас: контроллер,selectorиbuilder.selectиlistenкак методы, сSoloSubscriptionиSoloSubscriptions, в отдельном импорте,package:flutter_solo/listenable.dart. См. «Подписка без хранения колбэка» и «Методы из второго импорта».
Исправлено
Заголовок раздела «Исправлено»- Слушатель, который бросает, больше не оставляет без уведомления слушателей
за ним и не даёт задаче работать дальше при состоянии, которое её
keepWhileзапрещает. - Слушатель, добавленный после того, как контроллер закончил закрытие, пропускается: он не регистрируется и не хранится, ошибки тоже нет. Раньше он оставался в памяти навсегда.
- Один проход уведомления линеен по числу слушателей; раньше он был квадратичным.
Документация
Заголовок раздела «Документация»- Примеры README собираются, а на странице появились разделы о контроллере как
ValueListenable, о проекциях и оlisten. - У пакета есть собственные страницы, «Миксины» и «Тестирование».
- Пример больше не застревает на неудавшейся загрузке.
Первый опубликованный выпуск. 0.1.0 так и не покинула дерево.
SoloListenable<S>:Solo<S>, который служит ещё иValueListenable<S>, дляValueListenableBuilder,ListenableBuilder,AnimatedBuilderиListenable.merge. Слушатели вызываются синхронно, в порядке подписки, на каждое изменение состояния;streamуSoloпо-прежнему работает и приходит на микротаску позже.- Намеренно только для чтения:
valueиstateотдают один и тот же объект, а сеттера нет, потому что состояние принадлежит задачам. close()отменяет то, что идёт, отбрасывает всех слушателей и навсегда перестаёт уведомлять; ничто другое контроллер за вас не закрывает.- Реэкспортирует
package:solo/solo.dart, который реэкспортируетpackage:async_job/async_job.dart, поэтомуflutter_soloостаётся единственной зависимостью, которую добавляет приложение, и единственным импортом, который оно пишет. - Нижняя граница:
solo: ^0.2.0, чьим ядром задач служитasync_job: ^0.2.0с синхронной регистрациейjob.whenCancelled(callback).
Не публиковалась.