Pracuję nad aplikacją trzepotną, która działa jako książka adresowa. Chcę posortować listę "Nazwy" alfabetycznie i posortuj listę adresów, dopasowując się do sortowania nazw, aby wdrożyć je do ListView. Jak mogę archiwizować ten sortowanie drugiego?

void main() {
    List<String> names = ["Charles","Kevin","George"]
    List<String> adresses = ["Western Street 2","Roundabout 4","Western Street 4"]
    List<String> sortedNames = sortNames(names);
}

List<String> sortNames(List<String> names) {
    return names..sort((String a, String b)=>a.compareTo(b));
}
0
Mesalcode 3 styczeń 2020, 20:11

1 odpowiedź

Najlepsza odpowiedź

Jest to technicznie możliwe, ale będzie to więcej bólu głowy niż warto. Próbując żonglować dwie listy i zapewnić, że ich rozkazy zawsze się ustawiają, po prostu prosi o zawijający kodeks i skomplikowane błędy.

Jeśli dane na obu listach są powiązane i istnieje między nimi związek jeden do jednego, a następnie wpakuj dane do obiektów danych i mają jedną listę tych.

(Ponadto jest znacznie łatwiejszy sposób na posortowanie listy).

class Person {
  Person(this.name, this.address);

  String name;
  String address;
}

void main() {
  List<Person> persons = [
    Person('Charles', 'Western Street 2'), 
    Person('Kevin', 'Roundabout 4'),
    Person('George', 'Western Street 4'),
  ];

  // This approach sorts the list in place, changing the order of the original list
  persons.sort((a, b) => a.name.compareTo(b.name));

  // This approach returns a new list, leaving the original unaffected
  final sortedPersons = List.of(persons)..sort((a, b) => a.name.compareTo(b.name));
}
1
Abion47 3 styczeń 2020, 19:58