Event({
@required this.earliestTime,
@required this.startTime,
@required this.siteName,
this.siteInfo = Site(siteName)
}) {}
Вы указываете, что если что-то создает объект Event
, но пропускает аргумент siteInfo
, конструктор Event
должен инициализировать siteInfo
значением по умолчанию Site(siteName)
. Однако Dart требует, чтобы значения аргумента по умолчанию были константами времени компиляции, и Site(siteName)
не может быть определено во время компиляции, поскольку это зависит от siteName
.
В общем, вместо этого вы можете позволить значению по умолчанию null
и инициализировать его позже, либо через список инициализации:
Event({
@required this.earliestTime,
@required this.startTime,
@required this.siteName,
Site siteInfo
}) : siteInfo = siteInfo ?? Site(siteName) {}
или в теле конструктора.
Тем не менее, мне не ясно, что вы на самом деле хотите, чтобы Event
имеют параметры siteName
и siteInfo
. Это нормально, если поставляемый siteName
отличается от siteInfo.siteName
? Если нет, тогда для конструктора Event
должно быть указано только одно, чтобы исключить любую возможность несоответствия, например:
Event({
@required this.earliestTime,
@required this.startTime,
@required this.siteName,
}) : siteInfo = Site(siteName) {}
или
Event({
@required this.earliestTime,
@required this.startTime,
@required this.siteInfo
}) {}
String get siteName => siteInfo.siteName;