data.map((singlePost) {
mediaID = singlePost["mediaID"];
//second await call below, this won't work as-is, correct?
finalData = await httpClient.get('http://somewebsite/media/$mediaID')
Не собирается работать. Во-первых, вы используете await
в обратном вызове, предоставленном map
, но await
можно использовать только в функции, помеченной async
.
После того, как вы пометите обратный вызов async
, код, вероятно, не будет делать то, что вы хотите. List.map()
используется для преобразования a List
. Например, вы использовали бы его для создания списка String
s из списка int
s или наоборот. В этом случае вы будете генерировать список (на самом деле Iterable
) из Future
с. Вы нигде не храните этот список Future
, и поэтому вы никогда не сможете await
уведомить их о завершении.
То, что вы могли бы это что-то вроде:
final futures = data.map((singlePost) async { ... });
await Future.wait(futures);
И это будет ждать всех операций для завершения. Однако у вас будет другая проблема, связанная с тем, что ваш map
обратный вызов делает:
finalData = await httpClient.get('http://somewebsite/media/$mediaID')
, что означает, что каждый обратный вызов будет сбивать переменную finalData
(независимо от того, что это) в некотором неопределенном порядке.