whenOrNull<TResult extends Object?> method
TResult?
whenOrNull<TResult extends Object?>({
- TResult? text()?,
- TResult? card()?,
- TResult? carousel(
- String id,
- List<
RichComponent> items, - CarouselConfig? config
- TResult? productList(
- String id,
- List<
RichComponent> items, - ProductListConfig? config
- TResult? image()?,
- TResult? buttonGroup(
- String id,
- List<
RichButton> buttons, - String layout
A variant of when that fallback to returning null
It is equivalent to doing:
switch (sealedClass) {
case Subclass(:final field):
return ...;
case _:
return null;
}
Implementation
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function( String content, String format)? text,TResult? Function( String id, RichImage? image, String title, String? subtitle, String? description, @JsonKey(fromJson: _metadataFromJson) Map<String, String>? metadata, List<RichAction>? actions)? card,TResult? Function( String id, List<RichComponent> items, CarouselConfig? config)? carousel,TResult? Function( String id, List<RichComponent> items, ProductListConfig? config)? productList,TResult? Function( String id, String url, String? alt, String? caption, @JsonKey(name: 'aspect_ratio') String? aspectRatio, List<RichAction>? actions)? image,TResult? Function( String id, List<RichButton> buttons, String layout)? buttonGroup,}) {final _that = this;
switch (_that) {
case TextComponent() when text != null:
return text(_that.content,_that.format);case CardComponent() when card != null:
return card(_that.id,_that.image,_that.title,_that.subtitle,_that.description,_that.metadata,_that.actions);case CarouselComponent() when carousel != null:
return carousel(_that.id,_that.items,_that.config);case ProductListComponent() when productList != null:
return productList(_that.id,_that.items,_that.config);case ImageComponent() when image != null:
return image(_that.id,_that.url,_that.alt,_that.caption,_that.aspectRatio,_that.actions);case ButtonGroupComponent() when buttonGroup != null:
return buttonGroup(_that.id,_that.buttons,_that.layout);case _:
return null;
}
}