Sobes.tech
Back to questions
Junior — Middle
142

Объясните концепцию потоков данных (Stream) в языке Dart и их основные особенности.

Answer from AI

sobes.tech AI

В Dart поток данных (Stream) — это последовательность асинхронных событий, которые могут приходить с течением времени. Потоки позволяют работать с данными, которые поступают не сразу, а постепенно, например, данные с сети, пользовательские события или таймеры.

Основные особенности Stream:

  • Асинхронность: события могут приходить в разное время, обработка происходит без блокировки основного потока.
  • Подписка: чтобы получать события, нужно подписаться на поток.
  • Типы потоков: бывают однопоточные (single-subscription) и многопоточные (broadcast).
  • Обработка событий: можно использовать методы listen, await for, а также трансформации потоков (map, where и др.).

Пример использования:

Stream<int> countStream(int max) async* {
  for (int i = 1; i <= max; i++) {
    await Future.delayed(Duration(seconds: 1));
    yield i; // отправляем событие
  }
}

void main() async {
  await for (var value in countStream(3)) {
    print(value); // Выведет 1, затем 2, затем 3 с задержкой в 1 секунду
  }
}

Таким образом, Stream — мощный инструмент для работы с асинхронными данными в Flutter и Dart.