Сортировка списка на основе свойства объекта — обычная задача при разработке приложений 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. Используя эти методы, вы можете легко настроить логику сортировки в соответствии с вашими конкретными потребностями. Не забудьте выбрать тот подход, который лучше всего соответствует вашим требованиям и стилю кодирования.