when<TResult extends Object?> method
- @optionalTypeArgs
- TResult $default(
- String identifier,
- List<
LabelValueDefinitionFlag> flags, - bool configurable,
- LabelPreference defaultSetting,
- String severity,
- String blurs,
- Map<
LabelTarget, Map< behaviors,ModerationBehaviorContext, ModerationBehavior> > - String? definedBy,
A switch
-like method, using callbacks.
As opposed to map
, this offers destructuring.
It is equivalent to doing:
switch (sealedClass) {
case Subclass(:final field):
return ...;
case Subclass2(:final field2):
return ...;
}
Implementation
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String identifier, List<LabelValueDefinitionFlag> flags, bool configurable, LabelPreference defaultSetting, String severity, String blurs, Map<LabelTarget, Map<ModerationBehaviorContext, ModerationBehavior>> behaviors, String? definedBy) $default,) {final _that = this;
switch (_that) {
case _InterpretedLabelValueDefinition():
return $default(_that.identifier,_that.flags,_that.configurable,_that.defaultSetting,_that.severity,_that.blurs,_that.behaviors,_that.definedBy);case _:
throw StateError('Unexpected subclass');
}
}