【发布时间】:2025-12-27 03:00:07
【问题描述】:
所以我有这个代码:
getAllDiscussionsFromDb() async {
List<Discussion> discussionsToReturn = [];
List<Discussion> returnDiscussions(var args){
return discussionsToReturn;
}
var discussionsFromDb = await database.query("select * from discussions");
// We have to instantiate actual discussion objects from the database columns
return discussionsFromDb.forEach((discussion) async {
int discussionId = discussion[4];
var comments;
comments = await getCommentsOfDiscussion(discussionId);
discussionsToReturn.add(new Discussion(discussion[0], discussion[1], discussion[2], discussion[3], comments));
}).then(returnDiscussions);
}
唯一的问题是 cmets = ... 行。
这是 getCommentsOfDiscussion 函数:
getCommentsOfDiscussion(id) async {
List<SingleComment> allComments = [];
List<SingleComment> returnComments(var args) {
return allComments;
}
var commentsFromDb = await database.query("select * from comments where discussionId = $id");
// We have to instantiate actual SingleComment objects from the database columns
return commentsFromDb.forEach((comment) async {
allComments.add(new SingleComment(comment[0], comment[1], comment[2], comment[3]));
}).then(returnComments);
}
如果我将 cmets = await ... 替换为 cmets = [],我的代码可以正常工作。 await 一定有某种错误。我尝试使用 .then 而不是 await,但随后出现错误,我无法在 null 上使用 call。
提前致谢。
【问题讨论】:
标签: asynchronous async-await dart