Flutter:列表地图组合

发布于 2025-01-11 17:34:09 字数 308 浏览 0 评论 0原文

我制作了三个列表,第一个列表用于免费服务器,第二个列表用于付费服务器,第三个列表包括两者。 问题是,当他添加第三个列表中的列表时,他按顺序添加它们 换句话说,他添加了上面的整个第一个列表和下面的第二个列表 我想要一种方法来组合两个列表并根据名称、号码或任何其他内容排列它们。重要的是它们不是按照同一个列表排列的(第一个在上面,第二个在下面) 输入图片此处描述

I made three lists, the first for free servers, the second for paid servers, and the third list includes both together.
The problem is that when he adds the lists in the third list, he adds them in order
In other words, he adds the whole first list above and the second list below
I want a way to combine the two lists and arrange them according to name, number, or any other thing. The important thing is that they are not arranged according to the same list (the first is above and the second is below)
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

始终不够 2025-01-18 17:34:09

您可以在“allservs”上使用排序方法。这是一个根据“cnumber”对组合列表进行排序的工作示例:

var servers = List.from([
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 7,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 2,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 1,
    'isvip': false,
  },
]);

var newServers = List.from([
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 7,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 12,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 3,
    'isvip': false,
  },
]);

get allServers => (List.from(newServers) + List.from(servers))
  ..sort((a, b) => (a['cnumber'] >= b['cnumber']) ? 1 : -1);

void main() {
  print(allServers);
}

You can use sort method on 'allservs'. Here is a working sample that sorts combined list based on 'cnumber':

var servers = List.from([
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 7,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 2,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 1,
    'isvip': false,
  },
]);

var newServers = List.from([
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 7,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 12,
    'isvip': false,
  },
  {
    'name': 'Singapore',
    'flag': 'assets/images/flags/singapore.png',
    'cnumber': 3,
    'isvip': false,
  },
]);

get allServers => (List.from(newServers) + List.from(servers))
  ..sort((a, b) => (a['cnumber'] >= b['cnumber']) ? 1 : -1);

void main() {
  print(allServers);
}
半寸时光 2025-01-18 17:34:09

最简单的方法是这样做:

 var allServers = [...servers, ...newsServers ];

例如,您可以在 DartPad 中看到此示例:

image< /a>

这将导致输出:

[{name: Singapore}, {name1: Singapore1}]

The simples way would be to do it like this:

 var allServers = [...servers, ...newsServers ];

For Example, you can see this sample in DartPad:

image

which would result in outputing:

[{name: Singapore}, {name1: Singapore1}]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文