Что нужно знать про async*, yield и yield* во Flutter/Dart?
Что хотят услышать интервьюеры:
Коротко: async* создает Stream через асинхронный генератор, yield отправляет событие, а yield* делегирует другой поток.
Ответ:
Где применяется:
- удобно для последовательных состояний loading/data
- ошибки можно отдавать через stream
- генератор должен учитывать отмену подписки
Пример:
try {
final user = await repo.fetchUser();
}
catch (e) {
emit(ErrorState('$e'));
} Как отвечать на собеседовании: объясните назначение, границы применения и почему это лучше альтернативы в конкретном сценарии. Типичная ошибка: делать генератор с бесконечным циклом без задержки.