when<TResult extends Object?> method
TResult
when<TResult extends Object?>({
- required TResult withAccessToken(),
- required TResult withFreshAccessToken(),
- required TResult withEmail(),
- required TResult withPhoneNumber(),
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(
AuthToken authToken, String oldPassword, String newPassword)
withAccessToken,
required TResult Function(AuthToken freshAuthToken, String newPassword)
withFreshAccessToken,
required TResult Function(
String email, String verificationCode, String newPassword)
withEmail,
required TResult Function(
String phoneNumber, String verificationCode, String newPassword)
withPhoneNumber,
}) {
final _that = this;
switch (_that) {
case UpdatePasswordRequestWithAccessToken():
return withAccessToken(
_that.authToken, _that.oldPassword, _that.newPassword);
case UpdatePasswordRequestWithFreshAccessToken():
return withFreshAccessToken(_that.freshAuthToken, _that.newPassword);
case UpdatePasswordRequestWithEmail():
return withEmail(
_that.email, _that.verificationCode, _that.newPassword);
case UpdatePasswordRequestWithPhoneNumber():
return withPhoneNumber(
_that.phoneNumber, _that.verificationCode, _that.newPassword);
}
}