when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult threadItemPost(
    1. ThreadItemPost data
    ),
  2. required TResult threadItemNoUnauthenticated(
    1. ThreadItemNoUnauthenticated data
    ),
  3. required TResult threadItemNotFound(
    1. ThreadItemNotFound data
    ),
  4. required TResult threadItemBlocked(
    1. ThreadItemBlocked 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( ThreadItemPost data)  threadItemPost,required TResult Function( ThreadItemNoUnauthenticated data)  threadItemNoUnauthenticated,required TResult Function( ThreadItemNotFound data)  threadItemNotFound,required TResult Function( ThreadItemBlocked data)  threadItemBlocked,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UThreadItemValueThreadItemPost():
return threadItemPost(_that.data);case UThreadItemValueThreadItemNoUnauthenticated():
return threadItemNoUnauthenticated(_that.data);case UThreadItemValueThreadItemNotFound():
return threadItemNotFound(_that.data);case UThreadItemValueThreadItemBlocked():
return threadItemBlocked(_that.data);case UThreadItemValueUnknown():
return unknown(_that.data);}
}