Sobes.tech
Назад к вопросам
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 для потоковых данных.