Flutter:列出地图组合
Flutter : Lists map combine
我列出了三个列表,第一个是免费服务器,第二个是付费服务器,第三个列表包括两者。
问题是当他添加第三个列表中的列表时,他是按顺序添加的
换句话说,他添加了上面的整个第一个列表和下面的第二个列表
我想要一种方法来组合这两个列表并根据名称、编号或任何其他内容排列它们。重要的是不是按照同一个list排列的(第一个在上面,第二个在下面)
您可以在 '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);
}
最简单的方法是这样做:
var allServers = [...servers, ...newsServers ];
例如,您可以在 DartPad 中看到此示例:
image
这将导致输出:
[{name: Singapore}, {name1: Singapore1}]
我列出了三个列表,第一个是免费服务器,第二个是付费服务器,第三个列表包括两者。
问题是当他添加第三个列表中的列表时,他是按顺序添加的
换句话说,他添加了上面的整个第一个列表和下面的第二个列表
我想要一种方法来组合这两个列表并根据名称、编号或任何其他内容排列它们。重要的是不是按照同一个list排列的(第一个在上面,第二个在下面)
您可以在 '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);
}
最简单的方法是这样做:
var allServers = [...servers, ...newsServers ];
例如,您可以在 DartPad 中看到此示例:
image
这将导致输出:
[{name: Singapore}, {name1: Singapore1}]