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 UPostInteractionSettingsPrefThreadgateAllowRulesMentionRule():
return mentionRule(_that.data);case UPostInteractionSettingsPrefThreadgateAllowRulesFollowerRule():
return followerRule(_that.data);case UPostInteractionSettingsPrefThreadgateAllowRulesFollowingRule():
return followingRule(_that.data);case UPostInteractionSettingsPrefThreadgateAllowRulesListRule():
return listRule(_that.data);case UPostInteractionSettingsPrefThreadgateAllowRulesUnknown():
return unknown(_that.data);}
}