Стримы во Flutter используются для обработки последовательности асинхронных событий. Это могут быть данные из сети, пользовательский ввод, изменения состояния и т.д.
Ключевые аспекты использования:
Future, но представляют собой поток событий, а не одно будущее значение.StreamProvider).Основные классы:
Stream: Представляет последовательность асинхронных событий. Нельзя напрямую создать Stream, он создается источником данных (например, HttpClient, File.watch, StreamController).StreamController: Позволяет создавать и управлять стримами. Используется для добавления данных или ошибок в стрим.StreamSubscription: Объект, который возвращается при подписке на стрим. Позволяет слушать события и отменять подписку.dart
Примеры использования:
StreamController<void> _buttonClicked = StreamController();_socket.listen((data) => _streamController.add(data));Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);Интеграция с виджетами:
StreamBuilder: Виджет, который перестраивает свою подветку всякий раз, когда стрим эмитирует новое значение.dart
Преимущества:
Важно управлять жизненным циклом подписок (StreamSubscription.cancel()) и контроллеров (StreamController.close()) для предотвращения утечек памяти.