Сортировка списка различных объектов с одинаковым свойством (отметка времени) в Flutter / Dart - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу отсортировать по дате список, который содержит 2 разных объекта (ClassA и ClassB) с одинаковой меткой времени свойства «creationAt». Я пробовал это решение:

_list.sort((a, b) => a.createdAt.compareTo(b.createdAt));

Это работает только тогда, когда _list содержит один тип объектов (ClassA или ClassB), но не с обоими.

У кого-нибудь есть идея? Спасибо.

Решение: создать абстрактный класс со свойством createAt и реализовать его на дочерних элементах

1 Ответ

1 голос
/ 17 апреля 2020

Я думаю, что проблема в том, что у вас есть список с типом Dynami c. Поэтому я бы порекомендовал создать абстрактный класс, который содержит как информацию из ClassA, так и ClassB, чтобы компилятор dart понимал.

List<Parent> _list = [
  ClassA(DateTime(2020, 04, 04)),
  ClassB(DateTime(2020, 03, 04)),
  ClassA(DateTime(2020, 02, 04)),
  ClassB(DateTime(2020, 01, 04))
];

_list.sort((a,b)=> b.createdAt.compareTo(a.createdAt));

abstract class Parent {
  DateTime createdAt;
}

class ClassA implements Parent {
  DateTime createdAt;
  ClassA(this.createdAt);
}

class ClassB implements Parent {
  DateTime createdAt;
  ClassB(this.createdAt);
}

Здесь также есть CodePen, где я мог бы отсортировать список.

https://codepen.io/md-weber/pen/RwWaMgz

...