Список объектов класса-значения в Dart
Список объектов вы уже собирали из обычных классов - литерал списка работает так же для класса-значения. Каждый элемент - отдельная запись с теми же полями:
class Post {
final String title;
final int likes;
const Post(this.title, this.likes);
@override
String toString() => "Post($title, $likes)";
}
Поместим объекты в список:
var team = [
Post("Ann", 25),
Post("Bob", 30),
];
print(team.length);
Элементы списка можно фильтровать и сортировать стандартными методами, обращаясь к полям по точке или в функции с параметром:
class Score {
final String name;
final int pts;
Score(this.name, this.pts);
@override
String toString() => "Score($name, $pts)";
}
Поместим объекты в список:
var rows = [
Score("Ann", 10),
Score("Bob", 7),
Score("Cy", 12),
];
var top = rows.where((row) => row.pts >= 10).toList();
print(top.length);
При обходе удобно выводить каждую запись целиком -
toString сработает для каждого элемента:
class Task {
final String title;
final bool done;
Task(this.title, this.done);
@override
String toString() => "Task($title, $done)";
}
Поместим объекты в список:
var jobs = [
Task("read", true),
Task("write", false),
];
for (var job in jobs) {
print(job);
}
Сделайте класс Pet с полями
name и kind.
Дан список:
var pets = [
Pet("Rex", "dog"),
Pet("Mia", "cat"),
];
Выведите на экран количество элементов
в списке pets.
Сделайте класс Grade с полями
subject и mark.
Дан список:
var sheet = [
Grade("math", 5),
Grade("art", 3),
Grade("math", 4),
];
Отфильтруйте список sheet: оставьте
только записи с mark >= 4 и выведите
на экран их число.