when<TResult extends Object?> method
TResult
when<TResult extends Object?>({
- required TResult text(),
- required TResult card(),
- required TResult carousel(
- String id,
- List<
RichComponent> items, - CarouselConfig? config
- required TResult productList(
- String id,
- List<
RichComponent> items, - ProductListConfig? config
- required TResult image(),
- required TResult buttonGroup(
- String id,
- List<
RichButton> buttons, - String layout
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?>({required TResult Function( String content, String format) text,required TResult Function( String id, RichImage? image, String title, String? subtitle, String? description, @JsonKey(fromJson: _metadataFromJson) Map<String, String>? metadata, List<RichAction>? actions) card,required TResult Function( String id, List<RichComponent> items, CarouselConfig? config) carousel,required TResult Function( String id, List<RichComponent> items, ProductListConfig? config) productList,required TResult Function( String id, String url, String? alt, String? caption, @JsonKey(name: 'aspect_ratio') String? aspectRatio, List<RichAction>? actions) image,required TResult Function( String id, List<RichButton> buttons, String layout) buttonGroup,}) {final _that = this;
switch (_that) {
case TextComponent():
return text(_that.content,_that.format);case CardComponent():
return card(_that.id,_that.image,_that.title,_that.subtitle,_that.description,_that.metadata,_that.actions);case CarouselComponent():
return carousel(_that.id,_that.items,_that.config);case ProductListComponent():
return productList(_that.id,_that.items,_that.config);case ImageComponent():
return image(_that.id,_that.url,_that.alt,_that.caption,_that.aspectRatio,_that.actions);case ButtonGroupComponent():
return buttonGroup(_that.id,_that.buttons,_that.layout);}
}