Перейти к содержимому

Список изменений

  • 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.44 flutter 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.

  • В solo Solo.onError стал уведомлением, а за ошибку, которой больше ни у кого нет, отвечает новый Solo.onUnanswered: за ту, которой не несёт ни один исход, и за Failed, который никто не наблюдает. Заданный Solo.observer или переопределение onError, которое не зовёт super, больше не удерживают такую ошибку от зоны: см. ту же запись в списке изменений solo.
  • Job.ignore() переименован в Job.ignoreFailure() в async_job.
  • В solo Solo.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).

Не публиковалась.