when<TResult extends Object?> method
- @optionalTypeArgs
- TResult $default(
- String $type,
- ChatPreference chat,
- FilterablePreference follow,
- FilterablePreference like,
- FilterablePreference likeViaRepost,
- FilterablePreference mention,
- FilterablePreference quote,
- FilterablePreference reply,
- FilterablePreference repost,
- FilterablePreference repostViaRepost,
- Preference starterpackJoined,
- Preference subscribedPost,
- Preference unverified,
- Preference verified,
- Map<
String, dynamic> ? $unknown,
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?>(TResult Function( String $type, @ChatPreferenceConverter() ChatPreference chat, @FilterablePreferenceConverter() FilterablePreference follow, @FilterablePreferenceConverter() FilterablePreference like, @FilterablePreferenceConverter() FilterablePreference likeViaRepost, @FilterablePreferenceConverter() FilterablePreference mention, @FilterablePreferenceConverter() FilterablePreference quote, @FilterablePreferenceConverter() FilterablePreference reply, @FilterablePreferenceConverter() FilterablePreference repost, @FilterablePreferenceConverter() FilterablePreference repostViaRepost, @PreferenceConverter() Preference starterpackJoined, @PreferenceConverter() Preference subscribedPost, @PreferenceConverter() Preference unverified, @PreferenceConverter() Preference verified, Map<String, dynamic>? $unknown) $default,) {final _that = this;
switch (_that) {
case _Preferences():
return $default(_that.$type,_that.chat,_that.follow,_that.like,_that.likeViaRepost,_that.mention,_that.quote,_that.reply,_that.repost,_that.repostViaRepost,_that.starterpackJoined,_that.subscribedPost,_that.unverified,_that.verified,_that.$unknown);case _:
throw StateError('Unexpected subclass');
}
}