flutter - 在多个条件下排序列表
问题描述
我想显示一个名为 listaBaresFiltrada 的列表,按多个值排序。
事件模型:
import 'package:flutter/material.dart';
class Evento {
final String eventoId;
final String fechaEvento;
final String tituloEvento;
final String evento;
final bool es_privado;
final bool es_publico;
final String num_invitados;
final String ubicacionEvento;
final String latitudEvento;
final String longitudEvento;
final String descripcionEvento;
final String imagenEvento;
final String autorEvento;
final String fotoPerfilAutor;
final String interes;
double distancia;
bool menosde30km;
bool espasado;
首先,我想对以下值进行排序:
fechaEvento(日期时间升序)
menosde30km (bool true)
距离(双)
现在我可以制作 firsto 排序条件,如下所示:
//sorting the list
listaBaresFiltrada.sort((a,b) =>
DateFormat('d-M-yyyy HH:mm', 'de_DE').parse(a.fechaEvento).compareTo(
DateFormat('d-M-yyyy HH:mm', 'de_DE').parse(b.fechaEvento)));
但我不知道如何同时包含其他排序条件。
解决方案
由于您无法对具有 3 个不同条件的列表进行排序,因此我假设您想要拥有 3 个不同的列表。为此,您必须:
List sortOne = listaBaresFiltrada.sort((a,b) =>
if(a) return 1;
else return -1
);
List sortTwo = listaBaresFiltrada.sort((a,b) =>
DateFormat('d-M-yyyy HH:mm', 'de_DE').parse(a.fechaEvento).compareTo(DateFormat('d-M-yyyy HH:mm', 'de_DE').parse(b.fechaEvento))
);
List sortThree = listaBaresFiltrada.sort((a,b) =>
a.distancia.compareTo(b.distancia)
);
推荐阅读
- spring - oAuth2 重定向使用 http 协议而不是 https 协议
- javascript - 如果选中复选框(多个),则显示/隐藏下拉菜单 - 相同的类名 php
- android-studio - 如何保存所有 Android Studio 配置和设置?
- java - 如何使用 SpringBoot 应用程序打包 Angular 项目
- java - Gradle 忽略内部关系存储库
- javascript - React.createElement:类型无效(redux/react-router?)
- r - 行频率ggplot2的条形图
- google-pagespeed - 如何在谷歌页面速度洞察力上下载优化的图像、css、javascript
- jmeter - 如何在 JMeter 中模拟浏览器负载?
- ansible - 如何使用循环在ansible playbook中分配日期数组变量