Flutter Web中sort方法不支持,寻求列表排序替代方案
Flutter Web 列表排序替代方案
以下是几种解决sort方法在Flutter Web端失效的可行方案:
显式处理空值与类型校验
如果general字段可能为null,添加空值判断避免Web端抛出异常:newRanking.sort((a, b) { if (a.general == null && b.general == null) return 0; if (a.general == null) return 1; if (b.general == null) return -1; return b.general.compareTo(a.general); });创建列表副本后排序
部分场景下原列表的可变性在Web端存在兼容问题,先创建副本再排序:final sortedList = List.from(newRanking) ..sort((a, b) => b.general.compareTo(a.general)); newRanking = sortedList;手动实现排序算法
若默认sort方法彻底无法使用,手动实现基础排序逻辑(以冒泡排序为例):void sortRanking(List<YourItemType> list) { int length = list.length; for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - i - 1; j++) { if (list[j].general.compareTo(list[j+1].general) < 0) { final temp = list[j]; list[j] = list[j+1]; list[j+1] = temp; } } } } sortRanking(newRanking);借助collection包工具
若允许引入第三方依赖,collection包的排序工具在Web端兼容性更稳定:
先在pubspec.yaml添加依赖:dependencies: collection: ^1.18.0然后使用:
import 'package:collection/collection.dart'; newRanking.sort((a, b) => compareBy((item) => item.general, b, a));
内容的提问来源于stack exchange,提问作者Daniel Montil
相关产品推荐
相关产品推荐

