Флаттер StreamBuilder против FutureBuilder

В чем основное отличие StreamBuilder FutureBuilder.

  • Что использовать и когда использовать?

  • Какие задачи они предназначены для выполнения?

  • Как каждый из них слушает изменения в динамическом списке?

Ответ 1

Оба StreamBuilder и FutureBuilder имеют одинаковое поведение: они прослушивают изменения на соответствующем объекте. И активируйте новую сборку, когда они будут уведомлены о новом значении.

Поэтому, в конце концов, их отличия заключаются в том, как объект, который они слушают, работает.

Future похоже на Promise в JS или Task в С#. Они представляют собой асинхронный запрос. Futures имеют один и только один ответ. Обычное использование Future - это обработка вызовов HTTP. То, что вы можете слушать в Future, это состояние. Было ли это сделано, закончилось с успехом или произошла ошибка. Но это так.

Stream с другой стороны, подобен асинхронному Iterator в JS. Это может быть ассимилировано до значения, которое может меняться со временем. Обычно это представление веб-сокетов или событий (например, щелчок). При прослушивании Stream вы получите каждое новое значение, а также, если Stream имеет ошибку или завершен.

Как каждый из них прослушивает изменения в динамическом списке?

Future не может слушать переменные изменения. Это одноразовый ответ. Вместо этого вам нужно будет использовать Stream.

Ответ 2

Итак, если я делаю социальные медиа:
Лента новостей (то есть список с сообщениями) должна быть потоковым виджетом?
И если я загружаю страницу профиля в первый раз, я должен использовать будущего строителя?
Должен ли я объединить будущий сборщик для первых загрузок + потоковый сборщик для обновления?

Я не знаю, правильно ли я понял случаи.