原本想通过下面的代码, 使该函数变成同步执行,待图片上传完毕后,打印下结果。不过并未如愿,先执行了打印结果后,才执行了上传图片。故下面的函数行不通!!
void _onSendTap() async {
EasyLoading.show();
_viewModel.list.forEach((element) async {
if (CYObjectUtil.isNotEmptyString(element.value) && !element.value.contains('http')) {
String url = await CYOssUpLoad.uploadFile(context, file: File(element.value));
element.value = url;
}
});
EasyLoading.dismiss();
CYLog.d(_viewModel.list.toJSON());
}
解决办法,把list.forEach
换成 for in
循环, 代码如下:
void _onSendTap() async {
EasyLoading.show();
// 上传图片
for (CYOrderSurveyOperateModel element in _viewModel.list) {
if (CYObjectUtil.isNotEmptyString(element.value) && !element.value.contains('http')) {
String url = await CYOssUpLoad.uploadFile(context, file: File(element?.value));
element.value = url;
}
}
EasyLoading.dismiss();
CYLog.d(_viewModel.list.toJSON());
}
网友评论