logo

StreamBuilder

flutter

widgets

`StreamBuilder` — это виджет во Flutter, который строит UI на основе обновляющегося потока данных (`Stream`). Он слушает `Stream` и автоматически перестраивается при поступлении новых данных.

💡 Примечание:

Если `FutureBuilder` работает один раз — ждет результат и строит виджет, то `StreamBuilder` реагирует на все обновления потока и пересобирает UI каждый раз.

Основные параметры

stream (Stream<T>)— обязательный

Асинхронный поток, за которым следит виджет.

builder (AsyncWidgetBuilder<T>)— обязательный

Функция, вызываемая при каждом обновлении потока. Получает `BuildContext` и `AsyncSnapshot<T>`.

initialData (T?)

Начальное значение, которое будет отображено до получения данных из потока.

Полезные свойства snapshot

💡 Примечание:

`snapshot.connectionState` — состояние подключения к потоку (например, waiting, active, done).

💡 Примечание:

`snapshot.hasData` — true, если данные успешно получены.

💡 Примечание:

`snapshot.data` — сами полученные данные.

💡 Примечание:

`snapshot.hasError` — true, если произошла ошибка.

💡 Примечание:

`snapshot.error` — объект ошибки, если есть.

⚠️ Важно:

Каждое новое значение из потока вызывает перестроение виджета. Избегайте тяжёлых операций внутри `builder()`.

Сравнение: StreamBuilder vs FutureBuilder

АспектStreamBuilderFutureBuilder
Множественные обновленияДаНет, только один результат
Подходит для событийДаНет
Использование во FlutterИнтерфейс обновляется на каждое событиеИнтерфейс обновляется один раз