when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult mentionRule(
    1. MentionRule data
    ),
  2. required TResult followerRule(
    1. FollowerRule data
    ),
  3. required TResult followingRule(
    1. FollowingRule data
    ),
  4. required TResult listRule(
    1. ListRule 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( MentionRule data)  mentionRule,required TResult Function( FollowerRule data)  followerRule,required TResult Function( FollowingRule data)  followingRule,required TResult Function( ListRule data)  listRule,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UFeedThreadgateAllowMentionRule():
return mentionRule(_that.data);case UFeedThreadgateAllowFollowerRule():
return followerRule(_that.data);case UFeedThreadgateAllowFollowingRule():
return followingRule(_that.data);case UFeedThreadgateAllowListRule():
return listRule(_that.data);case UFeedThreadgateAllowUnknown():
return unknown(_that.data);}
}