Dart List.sort返回null
我使用以下方法从API中检索预算列表,并在处理之前对其进行排序:Dart List.sort返回null,dart,Dart,我使用以下方法从API中检索预算列表,并在处理之前对其进行排序: response['budgets'] .map((budget) => Budget.fromJson(budget)) .toList() .sort((a, b) => budgetComparator(a, b)) .forEach((budget) => addBudget(budget)); budgetComparator是一种返回介
response['budgets']
.map((budget) => Budget.fromJson(budget))
.toList()
.sort((a, b) => budgetComparator(a, b))
.forEach((budget) => addBudget(budget));
budgetComparator
是一种返回介于-1和1之间的int
的方法:
int budgetComparator(Budget a, Budget b) {
String purposeA = purposeById(a.purposeId).name,
purposeB = purposeById(b.purposeId).name;
return purposeA.compareTo(purposeB);
}
当我运行上述操作时,会收到错误消息:
NoSuchMethodError:对null调用了方法“forEach”
调试时,我能够观察到:
方法确实返回了sort()
null
方法返回8个toList()
项目的列表Budget
始终返回一个-1、0或1的整数budgetComparator
如何解决此问题?是的,
sort
方法确实返回空值:
如果您仍然想制作一个单行程序,可以使用级联表示法:
因此,在列表上调用了
sort
之后,我们将在列表上从toList
运行forEach
,而不是对sort
的结果运行forEach
。是的,sort
方法确实返回空值:
如果您仍然想制作一个单行程序,可以使用级联表示法:
因此,在列表上调用了sort
之后,我们将在列表上从toList
运行forEach
,而不是在sort
的结果上运行forEach
。list.sort
会对现有的列表进行变异。它不会返回新的列表
列表。排序
会改变现有的列表
。它不会返回新的列表
response['budgets'].map((budget) => Budget.fromJson(budget)).toList()
..sort((a, b) => budgetComparator(a, b))
..forEach((budget) => addBudget(budget));