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.