You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何为Evento类列表实现多优先级排序功能?

多条件排序实现方案

Dart的sort方法比较器的返回规则为:返回负数代表a排在b前,返回0代表两者优先级相同,返回正数代表b排在a前。多条件排序只需按优先级依次判断,当上一级条件返回0(优先级相等)时,再执行下一级条件判断即可。

完整实现代码如下:

import 'package:intl/intl.dart';

// 复用日期格式化实例,避免重复创建提升排序性能
final dateFormat = DateFormat('d-M-yyyy HH:mm', 'de_DE');

listaBaresFiltrada.sort((a, b) {
  // 第一优先级:按fechaEvento升序排列
  final dateA = dateFormat.parse(a.fechaEvento);
  final dateB = dateFormat.parse(b.fechaEvento);
  final dateCompareResult = dateA.compareTo(dateB);
  if (dateCompareResult != 0) return dateCompareResult;

  // 第二优先级:menosde30km为true的优先排在前面
  final kmCompareResult = (b.menosde30km ? 1 : 0) - (a.menosde30km ? 1 : 0);
  if (kmCompareResult != 0) return kmCompareResult;

  // 第三优先级:按distancia升序排列
  return a.distancia.compareTo(b.distancia);
});

优化建议

如果列表数据量较大,建议提前把Evento类的fechaEvento字段转换为DateTime类型存储,避免排序时重复解析字符串,能大幅提升排序效率。

内容的提问来源于stack exchange,提问作者mvasco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:27:03