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 embedExternalView(
    1. EmbedExternalView data
    ),
  4. required TResult embedRecordView(
    1. EmbedRecordView data
    ),
  5. required TResult embedRecordWithMediaView(
    1. EmbedRecordWithMediaView data
    ),
  6. 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( EmbedExternalView data)  embedExternalView,required TResult Function( EmbedRecordView data)  embedRecordView,required TResult Function( EmbedRecordWithMediaView data)  embedRecordWithMediaView,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UEmbedRecordViewRecordEmbedsEmbedImagesView():
return embedImagesView(_that.data);case UEmbedRecordViewRecordEmbedsEmbedVideoView():
return embedVideoView(_that.data);case UEmbedRecordViewRecordEmbedsEmbedExternalView():
return embedExternalView(_that.data);case UEmbedRecordViewRecordEmbedsEmbedRecordView():
return embedRecordView(_that.data);case UEmbedRecordViewRecordEmbedsEmbedRecordWithMediaView():
return embedRecordWithMediaView(_that.data);case UEmbedRecordViewRecordEmbedsUnknown():
return unknown(_that.data);}
}