当前位置: 首页 > 知识库问答 >
问题:

Flutter:根据排序的值列表对小部件进行排序

邵俊才
2023-03-14

我目前有一个应用程序,可以显示1.5公里半径内附近的医院,它看起来是这样的:

我遇到的麻烦是,我不知道如何根据他们从最低到最高的计算距离来排序卡片。

我创建了一个列表 doubleList=[]; 来存储计算的距离列表,并用doubleList.sort();对其进行排序。

 return new ListView.builder(
                shrinkWrap: true,
                itemCount: jsonresponse.length,
                itemBuilder: (context, index){

                  String name = jsonresponse[index]["Name"];
                  String lat = jsonresponse[index]["Latitude"];
                  String lng = jsonresponse[index]["Longitude"];

                  var distance = new GreatCircleDistance.fromDegrees(latitude1: double.parse(widget.lat), longitude1: double.parse(widget.lng), latitude2: double.parse(lat), longitude2: double.parse(lng));

                  var totaldistance = distance.haversineDistance().toStringAsFixed(2);

                  double distanceDouble = double.parse(totaldistance);

                  if(distanceDouble < 1500.00){

                    doubleList.add(distanceDouble);

                    doubleList.sort((a, b){
                      return a.compareTo(b);
                    });

                    print(doubleList);

                    return new Column(
                      children: <Widget>[
                        new Card(
                          child: new ListTile(
                            title: new Text(name),
                            subtitle: new Text("$distanceDouble m away"),
                            trailing: new IconButton(
                                icon: new Icon(Icons.info),
                                onPressed: (){
                                  makeDialog(lat, lng);
                                }),
                          ),
                        )
                      ],
                    );
                  }else{
                    return new Container();
                  }
                });
I/flutter ( 4286): [987.8]
I/flutter ( 4286): [987.8, 1014.87]
I/flutter ( 4286): [987.8, 1014.87, 1352.22]
I/flutter ( 4286): [128.26, 987.8, 1014.87, 1352.22]
I/flutter ( 4286): [128.26, 987.8, 1014.87, 1260.73, 1352.22]
I/flutter ( 4286): [122.91, 128.26, 987.8, 1014.87, 1260.73, 1352.22]
I/flutter ( 4286): [122.91, 128.26, 987.8, 1014.87, 1260.73, 1303.36, 1352.22]
I/flutter ( 4286): [122.91, 128.26, 987.8, 1014.87, 1232.47, 1260.73, 1303.36, 1352.22]
I/flutter ( 4286): [122.91, 128.26, 987.8, 1014.87, 1232.47, 1232.47, 1260.73, 1303.36, 1352.22]

我如何确保小部件将遵循排序的距离值的顺序?

共有1个答案

顾乐池
2023-03-14

listview.builder是一个itemBuilder wich负责构建一个项。小心,每次构建项目时的排序。

在调用list.builderJsonResponse[index]之前,需要对JsonResponse进行排序。

 类似资料:
  • 问题内容: 我有一个这样的字符串列表: 使用Y中的值对X进行排序以获取以下输出的最短方法是什么? 具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么? 问题答案: 最短代码 例: 一般来说 解释: 两个。 创建一个新的,list基于zip使用排序sorted()。 使用列表推导从排序的,压缩的中提取每对的第一个元素list。

  • 边走边学Java(Python背景)。简单的单词计数程序在Java7代码(不能用J8!)。 我有一个单词的哈希图:计数对。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用word的联系。 我正在寻找对这个想法的反馈: 遍历HashMap中的映射项(me) 使用me.getkey=K和me.getvalue=v new map.entry reverse_me=(V,K){不确定此语法} 将r

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 问题内容: 我正在使用python 2.7.3,并且尝试根据另一个列表的值顺序对字典列表进行排序。 IE浏览器: 根据listOne中值的顺序对listTwo进行排序,结果如下: 我最终需要输出此文本,因此为正确显示(以正确的顺序)所做的工作如下: 是否有某种lambda表达式可用于实现此目的?必须有一种更紧凑,更简单的方法来按我想要的顺序来获取它。 问题答案: 最简单的方法是使用来为您的词典列表

  • 问题内容: 我想对以下数据框进行排序: 我想对它进行排序,以便根据列表对LSE列进行重新排序: 当然,其他列也需要相应地重新排序。有没有办法在熊猫里做到这一点? 问题答案: pandas0.15版中对s的改进支持使您可以轻松做到这一点: 如果这只是临时排序,则可能不希望将LSE列保留为a ,但是如果您希望这种排序能够在不同的上下文中使用几次,则是一个很好的解决方案。 在更高版本的,中,已被替换为,

  • 问题内容: 我正在尝试根据第四列对该文件进行排序。我希望根据第四列的值对文件重新排序。 文件: 我想要这样排序: 我尝试了以下命令: 但是我得到了非法的变量名错误。有人可以帮我吗? 问题答案: 要对第四列进行排序,请仅使用选择器。 您可能还想更自然地对数字排序。例如,屈服而不是(字典顺序)。 如果您收到有关的错误,请确保您的外壳是bash。也许您缺少脚本的顶部?