when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult accountCreated(
    1. AccountCreated data
    ),
  2. required TResult emailUpdated(
    1. EmailUpdated data
    ),
  3. required TResult emailConfirmed(
    1. EmailConfirmed data
    ),
  4. required TResult passwordUpdated(
    1. PasswordUpdated data
    ),
  5. required TResult handleUpdated(
    1. HandleUpdated data
    ),
  6. 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( AccountCreated data)  accountCreated,required TResult Function( EmailUpdated data)  emailUpdated,required TResult Function( EmailConfirmed data)  emailConfirmed,required TResult Function( PasswordUpdated data)  passwordUpdated,required TResult Function( HandleUpdated data)  handleUpdated,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UEventDetailsAccountCreated():
return accountCreated(_that.data);case UEventDetailsEmailUpdated():
return emailUpdated(_that.data);case UEventDetailsEmailConfirmed():
return emailConfirmed(_that.data);case UEventDetailsPasswordUpdated():
return passwordUpdated(_that.data);case UEventDetailsHandleUpdated():
return handleUpdated(_that.data);case UEventDetailsUnknown():
return unknown(_that.data);}
}