Flutter/Dart 列表排序后如何返回全部元素而非单个元素的问题求解
解决方案
你只需要修改方法的返回值类型,以及最终返回的内容即可,修改后代码如下:
static List<NavigationalCatalogDto> getLatestVersionCatalog( List<NavigationalCatalogDto> navigationalCatalogList) { navigationalCatalogList.sort((b, a) => a.version!.compareTo(b.version!)); return navigationalCatalogList; }
改动说明
- 方法返回值从单个
NavigationalCatalogDto对象调整为List<NavigationalCatalogDto>列表类型,匹配返回全量排序元素的需求 - 原逻辑仅返回排序后列表的第一个元素,现在直接返回完整的排序后列表
可选优化
原实现中sort方法会直接修改传入的原始列表对象,如果你不希望改动入参的原始排序,可以先拷贝列表副本再执行排序:
static List<NavigationalCatalogDto> getLatestVersionCatalog( List<NavigationalCatalogDto> navigationalCatalogList) { // 拷贝列表副本避免修改原入参 final sortedList = List<NavigationalCatalogDto>.from(navigationalCatalogList); sortedList.sort((b, a) => a.version!.compareTo(b.version!)); return sortedList; }
注意:如果入参列表可能为空,原写法取
[0]会触发下标越界异常,修改为返回全量列表后,空入参也会正常返回空列表,无需额外判空处理。
内容的提问来源于stack exchange,提问作者Gurjit Singh
相关产品推荐
相关产品推荐

