Почему мы используем статический оператор в этом файле пользовательской модели с пакетом Equatable? И почему мы передаем «пустой» аргумент для пользователя

Почему используется статическое ключевое слово? Зачем передавать аргумент «-» для пользователя?

import 'package:equatable/equatable.dart';

class User extends Equatable {
  const User(this.id);

  final String id;

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

  *static const empty = User('-');*
}

person Nikash Deka    schedule 14.03.2021    source источник
comment
Вы спрашивали того, кто это написал? Это выбор, который сделал этот человек. Мы не можем сказать, почему был выбран минус. Какое отношение флаттер-блок имеет к этому коду?   -  person nvoigt    schedule 14.03.2021
comment
Это static, потому что это const (const участников должно быть static).   -  person jamesdlin    schedule 14.03.2021
comment
Что будет, если убрать строку? Если что-то больше не работает, это может дать вам подсказку, для чего это используется. Если при удалении этой строки все работает, возможно, это не очень важно и действительно бесполезно для вашей программы.   -  person nvoigt    schedule 14.03.2021
comment
Этот фрагмент взят из примера flutter_login, написанного автором самой библиотеки блоков!   -  person Nikash Deka    schedule 14.03.2021
comment
Возможная мотивация: объявив empty как static const, можно использовать empty как значение по умолчанию для именованного параметра. Например: void logIn({User user = User.empty}) {}. Однако использование '-' для id является произвольным выбором.   -  person Mabsten    schedule 14.03.2021
comment
Это не связано с подклассом Equatable (который служит для предоставления класса реализации hashCode и ==)   -  person Mabsten    schedule 14.03.2021