when<TResult extends Object?> method
TResult
when<TResult extends Object?>(
- TResult $default(
- String? uid,
- String? givenName,
- String? middleName,
- String? familyName,
- String? name,
- String? nickname,
- String? birthdate,
- String? profileURL,
- String? picture,
- String? externalId,
- List<
String> ? authTypes, - LoginSummary? loginSummary,
- String? username,
- String? gender,
- String? email,
- bool? emailVerified,
- Emails? emails,
- String? phoneNumber,
- bool? phoneNumberVerified,
- List<
ProfileAddress> ? addresses, - String? locale,
- String? bio,
- Map<
String, Object?> ? customFields, - Map<
String, Consent> ? consents, - String? createdAt,
- String? updatedAt,
- bool? liteOnly,
- String? company,
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? uid,
String? givenName,
String? middleName,
String? familyName,
String? name,
String? nickname,
String? birthdate,
String? profileURL,
String? picture,
String? externalId,
List<String>? authTypes,
LoginSummary? loginSummary,
String? username,
String? gender,
String? email,
bool? emailVerified,
Emails? emails,
String? phoneNumber,
bool? phoneNumberVerified,
List<ProfileAddress>? addresses,
String? locale,
String? bio,
Map<String, Object?>? customFields,
Map<String, Consent>? consents,
String? createdAt,
String? updatedAt,
bool? liteOnly,
String? company)
$default,
) {
final _that = this;
switch (_that) {
case _Profile():
return $default(
_that.uid,
_that.givenName,
_that.middleName,
_that.familyName,
_that.name,
_that.nickname,
_that.birthdate,
_that.profileURL,
_that.picture,
_that.externalId,
_that.authTypes,
_that.loginSummary,
_that.username,
_that.gender,
_that.email,
_that.emailVerified,
_that.emails,
_that.phoneNumber,
_that.phoneNumberVerified,
_that.addresses,
_that.locale,
_that.bio,
_that.customFields,
_that.consents,
_that.createdAt,
_that.updatedAt,
_that.liteOnly,
_that.company);
case _:
throw StateError('Unexpected subclass');
}
}