К содержимому

StreamProvider

StreamProvider - это тот же FutureProvider, но возвращающий Stream вместо Future.

StreamProvider обычно используется для:

  • прослушивания Firebase или веб-сокетов
  • перестройки другого провайдера каждые N секунд

Т. к. Stream сам по себе предоставляет возможность наблюдать за изменениями, вы можете подумать, что StreamProvider особо и не нужен. В частности, вам может показаться, что StreamBuilder будет также работать со Stream, но это мнение ошибочно.

Использование StreamProvider вместо StreamBuilder имеет несколько преимуществ:

  • возможность другим провайдерам слушать данный Stream с помощью ref.watch.
  • гарантия того, что загрузка и ошибки будут надлежащим образом обработаны благодаря AsyncValue.
  • не нужно уточнять: broadcast или не broadcast Stream.
  • последнее значение Stream сохраняется, т. е. каждый добавленный слушатель может сразу получить последние актуальные данные.
  • легко мокать такой Stream во время тестирования путем переопределения StreamProvider.