Разбираемся с yield во Flutter
Начинающие Flutter-разработчики не всегда понимают, для чего нужно ключевое слово yield в Dart. Оно используется в генераторах Stream для пошаговой передачи данных. Это полезно в BLoC для управления состояниями и событиями.
Примеры использования yield в Dart:
1. Простой генератор:
Stream<int> countStream(int to) async* { for (int i = 1; i <= to; i++) { yield i; // Постепенно выдаёт числа от 1 до to } }
Так мы можем создать поток, который поочередно выдает числа от 1 до указанного значения.
2. Использование в BLoC
class CounterBloc extends Bloc<CounterEvent, CounterState> { @override CounterState get initialState => CounterInitial(); @override Stream<CounterState> mapEventToState( CounterEvent event, ) async* { if (event is Increment) { yield CounterLoading(); // Представим, что здесь какая-то асинхронная логика yield CounterLoaded(newState); } } }
Здесь yield используется для отправки различных состояний (например, загрузки и загруженного состояния) в ответ на события.
yield во Flutter — это мощный инструмент для создания асинхронных потоков данных и управления состояниями в BLoC. Он делает код более чистым, понятным и поддерживаемым. А если говорить совсем просто, то yield добавляет значение к выходу потока функции async*. Это как return, но он не завершает функцию.
Подписывайтесь на телеграм-канал руководителя нашего направления Flutter/iOS Саши Ворожищева, чтобы узнать про Flutter больше.

