Мне нужно объединить данные 3 таблиц в блок:
getAll() async {
List<MoveInProgramViewModel> filledList = [];
final moveInProgramList = await moveInProgramRepository.getAllFromDb();
moveInProgramList.forEach((mip) async {
final move = await moveRepository.getFromDb(mip.moveID);
final program = await programRepository.getFromDb(mip.programID);
filledList.add(MoveInProgramViewModel(
mip.id,
move,
program,
mip.indexInProgram,
mip.sets,
mip.createdDate,
mip.modifiedDate,
));
controller.add(filledList);
});
}
обратите внимание, я вызываю controller.add(filledList);
в каждом цикле. Я предпочитаю выводить его за пределы цикла, чтобы он вызывался только после заполнения всех данных, но в результате в поток добавляется пустой список. Может быть await
или блокирующий Future
, ожидающий завершения цикла, прежде чем перейти к следующему оператору после цикла. Задержки, подобные тому, что предлагает этот ответ https://stackoverflow.com/a/62734808/4854670, - это просто взлом, а не решение. И этот другой ответ на самом деле не отвечает на вопрос: https://stackoverflow.com/a/58562342/4854670.