Ответ
StreamBuilder — это виджет Flutter, который автоматически перестраивает свой дочерний виджет в ответ на новые данные из Stream. Он управляет подпиской на поток и предоставляет снимок (AsyncSnapshot) текущего состояния потока (ожидание, данные, ошибка, завершение).
Основные параметры:
stream:Stream, на который подписывается виджет.builder: Функция, возвращающая виджет на основеAsyncSnapshot<T>.
Пример использования:
StreamBuilder<int>(
stream: myCounterStream, // Stream<int>
builder: (context, snapshot) {
// Проверяем состояние потока
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
}
if (snapshot.hasError) {
return Text('Ошибка: ${snapshot.error}');
}
// Данные доступны
return Text('Значение: ${snapshot.data}');
},
)
Практические нюансы:
StreamBuilderсам управляет жизненным циклом подписки — отписывается при демонтаже виджета.- Для потоков, которые должны существовать дольше жизни виджета (например, глобальное состояние), управление подпиской через
StreamBuilderбезопасно и удобно. AsyncSnapshot.connectionStateпозволяет точно отображать состояние загрузки (waiting,active,done).