这是我的提交函数,一切都很好,但 _imagesAssets.forEach 未运行,并且 _images 列表将为空。任何想法都会很棒
if (_formKey.currentState.validate()) {
_images.clear();
_imagesAssets.forEach((element) async {
_images.add(await getImageFileFromAssets(element));
});
PersianDateTime persianDate1 =
PersianDateTime(jalaaliDateTime: dateTextController.text);
persianDate1.toGregorian();
_preferences = await SharedPreferences.getInstance();
String _apiToken = _preferences.getString('apiToken');
TransactionAddDto transactionAddDto = new TransactionAddDto(
isCharity: _isCharity,
payDate: persianDate1.datetime.toString().replaceFirst(" ", "T"),
imageArray: _images,
apiToken: _apiToken,
userId: _selectedUser,
payVal: _transactionVal.toDouble(),
);
_transactionBloc.add(
new AddTransactionEvent(transactionAddDto),
);
}
Run Code Online (Sandbox Code Playgroud) 这是我的上传功能。我想要的输出是所有网址的列表,但它返回一个空列表。我尝试了不同的建议解决方案,但都失败了。
Future<List<String>> uploadFiles(List _images) async {
List<String> imagesUrls=[];
_images.forEach((_image) async{
StorageReference storageReference = FirebaseStorage.instance
.ref()
.child('posts/${_image.path}');
StorageUploadTask uploadTask = storageReference.putFile(_image);
await uploadTask.onComplete;
imagesUrls.add(await storageReference.getDownloadURL());
});
print(imagesUrls);
return imagesUrls;
}
Run Code Online (Sandbox Code Playgroud) 我注意到了这一点,forEach并for in产生了不同的行为。我有一个列表,RegExp并希望hasMatch在每个列表上运行。使用 遍历列表时forEach,hasMatch永远不会返回 true。但是,如果我使用for in,则hasMatch返回 true。
示例代码:
class Foo {
final str = "Hello";
final regexes = [new RegExp(r"(\w+)")];
String a() {
regexes.forEach((RegExp reg) {
if (reg.hasMatch(str)) {
return 'match';
}
});
return 'no match';
}
String b() {
for (RegExp reg in regexes) {
if (reg.hasMatch(str)) {
return 'match';
}
}
return 'no match';
}
}
void main() {
Foo foo = new …Run Code Online (Sandbox Code Playgroud)