无法从函数中获取价值,即使我有一个非常相似的函数。 - 颤振
Posted
技术标签:
【中文标题】无法从函数中获取价值,即使我有一个非常相似的函数。 - 颤振【英文标题】:Cannot get value out of the function, even though I have a very similar one that works. - Flutter 【发布时间】:2020-10-10 04:24:36 【问题描述】:所以这第一个不起作用。我正在获取快照并迭代以构建值列表,然后我想将这些值用于其他地方。有任何想法吗?第二个几乎相同,并且可以正常工作。
getAllFavoriteRecipes(RecipeNotifier recipeNotifier, favoriteIDs) async
var uid = (await AuthServices().getCurrentUser());
Stream<DocumentSnapshot> favorites =
Firestore.instance.collection('users').document(uid).snapshots();
List _favorites = [];
favorites.forEach((item)
var favoriteItem = item.data['favorites'];
_favorites.add(favoriteItem);
print('_favorites: $_favorites'); //<<This does print correctly>>>
);
List favoriteIDs2 = _favorites;
print('Hello: $_favorites'); //<<<<<does NOT print correctly>>>>>
print('Test: $favoriteIDs2'); //<<<<<does NOT print correctly>>>>>
QuerySnapshot snapshot = await Firestore.instance
.collection('recipes')
.where('recipeID', whereIn: favoriteIDs2)
.getDocuments();
List<RecipeList> _recipes = [];
snapshot.documents.forEach((document)
RecipeList recipe = RecipeList.fromMap(document.data);
_recipes.add(recipe);
);
recipeNotifier.recipeList = _recipes;
这个打印正确,虽然他们在做同样的事情:
QuerySnapshot featured =
await Firestore.instance.collection('featured').getDocuments();
List _featured = [];
featured.documents.forEach((document)
var featuredItem = document.data['recipeID'];
_featured.add(featuredItem);
);
List featuredIDs = _featured;
print(featuredIDs);
【问题讨论】:
【参考方案1】:看起来forEach() 返回一个 Future,您可以使用 await
,就像您使用 getDocuments() 返回的 Future。
Stream<DocumentSnapshot> favorites =
Firestore.instance.collection('users').document(uid).snapshots();
List _favorites = [];
await favorites.forEach((item)
var favoriteItem = item.data['favorites'];
_favorites.add(favoriteItem);
//print('_favorites: $_favorites');
);
print('Hello: $_favorites'); //<<<<<does NOT print correctly>>>>>
【讨论】:
不幸的是,这没有任何区别。在第一次打印中,它起作用了。在第二个中,它显示一个空列表。以上是关于无法从函数中获取价值,即使我有一个非常相似的函数。 - 颤振的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Django 视图中获取价值到 Ajax 成功函数中