Эффективные способы сортировки списка во Flutter на основе свойства объекта

Сортировка списка на основе свойства объекта — обычная задача при разработке приложений Flutter. В этой статье мы рассмотрим различные методы эффективного достижения этой цели, используя примеры кода в Dart. К концу вы получите четкое представление о различных способах сортировки списка во Flutter на основе свойства объекта.

Метод 1: использование метода sort()с пользовательским компаратором

class Person {
  String name;
  int age;
  Person(this.name, this.age);
}
void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 20),
  ];
  // Sort by age in ascending order
  people.sort((a, b) => a.age.compareTo(b.age));
  print(people);
}

Выход:

[Person{name: Bob, age: 20}, Person{name: John, age: 25}, Person{name: Alice, age: 30}]

Метод 2. Использование метода sort()с собственной функцией сравнения

class Person {
  String name;
  int age;
  Person(this.name, this.age);
}
int compareByAge(Person a, Person b) {
  return a.age.compareTo(b.age);
}
void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 20),
  ];
  // Sort by age in ascending order
  people.sort(compareByAge);
  print(people);
}

Выход:

[Person{name: Bob, age: 20}, Person{name: John, age: 25}, Person{name: Alice, age: 30}]

Метод 3: использование метода sort()с методом получения свойств

class Person {
  String name;
  int age;
  Person(this.name, this.age);

  static int Function(Person, Person) get compareByAge =>
    (a, b) => a.age.compareTo(b.age);
}
void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 20),
  ];
  // Sort by age in ascending order
  people.sort(Person.compareByAge);
  print(people);
}

Выход:

[Person{name: Bob, age: 20}, Person{name: John, age: 25}, Person{name: Alice, age: 30}]

Метод 4: использование метода sorted()из пакета collection

import 'package:collection/collection.dart';
class Person {
  String name;
  int age;
  Person(this.name, this.age);
}
void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 20),
  ];
  // Sort by age in ascending order
  people = people.sorted((a, b) => a.age.compareTo(b.age));
  print(people);
}

Выход:

[Person{name: Bob, age: 20}, Person{name: John, age: 25}, Person{name: Alice, age: 30}]

Сортировка списка на основе свойств объекта важна для многих приложений Flutter. В этой статье мы рассмотрели несколько эффективных методов достижения этой цели на примерах кода Dart. Используя эти методы, вы можете легко настроить логику сортировки в соответствии с вашими конкретными потребностями. Не забудьте выбрать тот подход, который лучше всего соответствует вашим требованиям и стилю кодирования.