Мне нужно получить список для функции;однако я хочу получить список из функции обратного вызова, которая сама находится внутри главной функции - это приводит к тому, что оператор yield выполняется не для основной функции, а для функции обратного вызова.
Моя проблемаочень похоже на проблему, которая была решена здесь: Компонент Dart: Как вернуть результат асинхронного обратного вызова? , но я не могу использовать Completer, потому что мне нужно уступать, а не возвращать.
код ниже должен лучше описать проблему:
Stream<List<EventModel>> fetchEvents() async* { //function [1]
Firestore.instance
.collection('events')
.getDocuments()
.asStream()
.listen((snapshot) async* { //function [2]
List<EventModel> list = List();
snapshot.documents.forEach((document) {
list.add(EventModel.fromJson(document.data));
});
yield list; //This is where my problem lies - I need to yield for function [1] not [2]
});
}