Назад к вопросам
Junior — Middle
102
Чем отличаются компоненты StreamBuilder и Future при работе с асинхронными данными в Flutter?
Ответ от нейросети
sobes.tech AI
В Flutter FutureBuilder и StreamBuilder используются для работы с асинхронными данными, но отличаются по типу источника данных:
-
FutureBuilder работает с объектом
Future— это одноразовая асинхронная операция, которая возвращает результат или ошибку один раз. Например, загрузка данных с сервера. -
StreamBuilder работает с
Stream— это поток данных, который может выдавать множество событий со временем. Например, обновления данных в реальном времени или события пользовательского ввода.
Пример использования FutureBuilder:
FutureBuilder<String>(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Ошибка: \\${snapshot.error}');
} else {
return Text('Данные: \\${snapshot.data}');
}
},
)
Пример использования StreamBuilder:
StreamBuilder<int>(
stream: counterStream(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return Text('Счетчик: \\${snapshot.data}');
},
)
Таким образом, выбирайте FutureBuilder для одноразовых операций и StreamBuilder для потоковых данных.