when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult embedImagesView(
    1. EmbedImagesView data
    ),
  2. required TResult embedVideoView(
    1. EmbedVideoView data
    ),
  3. required TResult embedGalleryView(
    1. EmbedGalleryView data
    ),
  4. required TResult embedExternalView(
    1. EmbedExternalView data
    ),
  5. required TResult unknown(
    1. Map<String, dynamic> data
    ),
})

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( EmbedImagesView data)  embedImagesView,required TResult Function( EmbedVideoView data)  embedVideoView,required TResult Function( EmbedGalleryView data)  embedGalleryView,required TResult Function( EmbedExternalView data)  embedExternalView,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UEmbedRecordWithMediaViewMediaEmbedImagesView():
return embedImagesView(_that.data);case UEmbedRecordWithMediaViewMediaEmbedVideoView():
return embedVideoView(_that.data);case UEmbedRecordWithMediaViewMediaEmbedGalleryView():
return embedGalleryView(_that.data);case UEmbedRecordWithMediaViewMediaEmbedExternalView():
return embedExternalView(_that.data);case UEmbedRecordWithMediaViewMediaUnknown():
return unknown(_that.data);}
}