我想知道,当转换器仅返回Future
时,是否有可能在Dart中将对象A的流转换为另一个对象B。 (例如A -> Future<B>
)
下面是一个示例...
Future<Car> getCar(String carId){
...
}
main(){
Stream<List<String>> carIds = listCarIds(...);
Stream<List<Car>> cars = ?? // <-- Is it possible to get this when `getCar` only returns future?
}
我只能做Stream<List<Future<Car>>>
,不能做Stream<List<Car>>
。
答案 0 :(得分:0)
根据@ user2864740的建议,我可以使用以下链式方法进行转换。
Stream<List<String>> idStream = ...
Stream<List<Car>> carStream = idStream
.map((ids) => ids.map((id) => getCar(id)))
.map((carFutureList) => Future.wait(carFutureList))
.asyncMap((futureCarList) => futureCarList);