Dart List.sort返回null

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是一种返回介

我使用以下方法从API中检索预算列表,并在处理之前对其进行排序:

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
  • toList()
    方法返回8个
    Budget
    项目的列表
  • budgetComparator
    始终返回一个-1、0或1的整数

如何解决此问题?

是的,
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));