繁体   English   中英

排序列表抖动

[英]Sort list flutter

我正在寻找一种最简单的方法来根据给定的值对列表进行排序,而不是使用两个列表。

示例我有列表[a,b,c,d] ,具有给定的值d ,我可以这样排序:

在此处输入图片说明

但是如果我有一个对象列表,我如何根据给定的值对其进行排序?

例子

List<ABC> list = [{fid:1,name:"a"},{fid:2,name:"b"},{fid:3,name:"c"},{fid:4,name:"d"}]

我有值 3。我想将列表排序为

List<ABC> list = [{fid:3,name:"c"},{fid:1,name:"A"},{fid:2,name:"b"},{fid:4,name:"d"},{fid:4,name:"d"}]

您只需要在此处执行自定义排序,其余内容将保持不变。

  List list = [{"fid":1,"name":"z"},{"fid":10,"name":"b"},{"fid":5,"name":"c"},{"fid":4,"name":"d"}];
  
  list.sort((a,b)=> a["fid"].compareTo(b["fid"]));
  
  int fidIndex=4;
  
  int indexToRemove=list.indexWhere((element) => element["fid"]==fidIndex);

  Map<String,dynamic> removedItem= list.removeAt(indexToRemove);

  list.insert(0,removedItem); 

  print(list);

您可以使用比较器对列表进行排序:

const list = [{fid:1,name:"a"},{fid:2,name:"b"},{fid:3,name:"c"},{fid:4,name:"d"}]
const fixedFid = 3

const sortedList = list.sort( (item1, item2) => { 
    if (item1.fid === fixedFid){
        return -1
    }
    if (item2.fid == fixedFid){
        return 1
    }
    return item1.fid.localeCompare(item2.fid)
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM