Flutter 按它对列表映射进行排序';保持颤振顺序的s值

Flutter 按它对列表映射进行排序';保持颤振顺序的s值,flutter,dart,Flutter,Dart,我正在制作一个游戏,它需要分数和一个玩家的名字,然后我想按最高值对分数进行排序,并将其与得分的玩家的名字保持一致。我有两个选择,不知道哪一个最好,怎么做。第一种是: List<Map> myList = [ { 'name' : 'John', 'score': 23}, { 'name' : 'Frederick', 'score': 61}, { 'name' : 'Morgana', 'score': 48}, { 'name' : 'Spoke', 'scor

我正在制作一个游戏,它需要分数和一个玩家的名字,然后我想按最高值对分数进行排序,并将其与得分的玩家的名字保持一致。我有两个选择,不知道哪一个最好,怎么做。第一种是:

List<Map> myList = [
  { 'name' : 'John', 'score': 23},
  { 'name' : 'Frederick', 'score': 61},
  { 'name' : 'Morgana', 'score': 48},
  { 'name' : 'Spoke', 'score': 36},
];
预期产出为:

Frederick: 61
Morgana: 48
Spoke: 36
John: 23

首先是针对您的案例的最佳解决方案。因为名字和分数之间有关联。你不能这样分类:

myList.sort((person1, person2) => person2['score'] - person1['score'] );

首先是针对您的案例的最佳解决方案。因为名字和分数之间有关联。你不能这样分类:

myList.sort((person1, person2) => person2['score'] - person1['score'] );
最好的方法是在类上实现

类播放器实现了可比较的{
最后的字符串名;
最终智力得分;
常量玩家(this.name,this.score);
@凌驾
int compareTo(其他玩家){
返回other.score-score;
}
}
void main(){
球员名单=[
球员('约翰',23岁),
球员('Frederick',61岁),
球员('Morgana',48岁),
球员('发言',36),
];
players.sort();
打印(players.map((player)=>player.score));/(61,48,36,23)
}
最好的方法是在类上实现

类播放器实现了可比较的{
最后的字符串名;
最终智力得分;
常量玩家(this.name,this.score);
@凌驾
int compareTo(其他玩家){
返回other.score-score;
}
}
void main(){
球员名单=[
球员('约翰',23岁),
球员('Frederick',61岁),
球员('Morgana',48岁),
球员('发言',36),
];
players.sort();
打印(players.map((player)=>player.score));/(61,48,36,23)
}

Id强烈建议制作一个
Player
对象,该对象的值为
name
score
,并且可能给它一个唯一的
Id
。然后使用dart的
sort()
方法
列出玩家=[“所有玩家”]
players.sort(a,b)=>a.score.compareTo(b.score))
Id强烈建议制作一个
Player
对象,该对象的值为
name
score
,并且可能给它一个唯一的
Id
。然后使用dart的
sort()
方法
列出玩家=[“所有玩家”]
players.sort(a,b)=>a.score.compareTo(b.score))