Передача свойств супер-конструктору Equatable - PullRequest
2 голосов
/ 16 января 2020

Я довольно новичок в Flutter и Dart, и у меня есть некоторые проблемы с пониманием того, как переписать класс, расширяющий обновленную версию Equatable.

Это работает с Equatable 0.4.0:

abstract class Failure extends Equatable {
   Failure([List properties = const<dynamic>[]]) : super(properties);
}

Однако при обновлении до Equatable 1.0.2 выдается ошибка на super(properties):

Слишком много позиционных аргументов: ожидается 0, но найдено 1.

Попробуйте удалить дополнительные аргументы.

Я не понимаю, как передать properties в супер-конструктор с Equatable 1.0.2

1 Ответ

2 голосов
/ 16 января 2020

Официальные документы Equatable описывают, как выставить ваши сравнительные свойства суперклассу. На самом деле вам вообще не нужно вызывать super в вашем конструкторе. Вместо этого вы будете использовать код, подобный следующему (не мой код, взятый из документации):

class Person extends Equatable {
  final String name;

  Person(this.name);

  @override
  List<Object> get props => [name];
}

Ключ здесь - переопределить метод получения реквизита. Экваториальный суперкласс обращается к свойствам в props геттере, чтобы выполнить свои магические действия c.

Все, что уравнивает, - это переопределение оператора == в ваших классах. Существует отличная средняя статья, в которой рассматриваются некоторые общие переопределения операторов, которые могут оказаться полезными .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...