我的类中有一个函数,该函数应使用其List
在id
内找到一个对象,并返回匹配的对象。
static Category findById(List<Category> categories, String id) {
categories.forEach((category) {
if (category.id == id) {
return category;
}
});
}
但是,findById
始终返回null
。
调试时,category.id
和id
相等,并且编译器甚至跳转到return语句,但是返回值始终为null
。
答案 0 :(得分:1)
您是从错误范围返回的。您实际上是在返回forEach
方法,而不是findById
。幸运的是,Dart具有内置功能,可以执行您想要的操作,即List.firstWhere
:
static Category findById(List<Category> categories, String id) =>
categories.firstWhere((category) => category.id == id);
您还可以改用for
循环,这也正是firstWhere
所做的。这样,您可以在正确的范围内返回:
static Category findById(List<Category> categories, String id) {
for (Category category in categories)
if (category.id == id) return category;
return null; // no matching element
}
您可以找到more about scopes here。
最后一个return null
作为explained here是可选的。