when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult embedImages(
    1. EmbedImages data
    ),
  2. required TResult embedVideo(
    1. EmbedVideo data
    ),
  3. required TResult embedExternal(
    1. EmbedExternal data
    ),
  4. required TResult embedRecord(
    1. EmbedRecord data
    ),
  5. required TResult embedRecordWithMedia(
    1. EmbedRecordWithMedia 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( EmbedImages data)  embedImages,required TResult Function( EmbedVideo data)  embedVideo,required TResult Function( EmbedExternal data)  embedExternal,required TResult Function( EmbedRecord data)  embedRecord,required TResult Function( EmbedRecordWithMedia data)  embedRecordWithMedia,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UFeedPostEmbedEmbedImages():
return embedImages(_that.data);case UFeedPostEmbedEmbedVideo():
return embedVideo(_that.data);case UFeedPostEmbedEmbedExternal():
return embedExternal(_that.data);case UFeedPostEmbedEmbedRecord():
return embedRecord(_that.data);case UFeedPostEmbedEmbedRecordWithMedia():
return embedRecordWithMedia(_that.data);case UFeedPostEmbedUnknown():
return unknown(_that.data);}
}