maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
  1. TResult $default(
    1. @JsonKey.new(name: 'id') String userId,
    2. @JsonKey.new(name: 'healthID') String healthId,
    3. @JsonKey.new(name: 'username') String username,
    4. @JsonKey.new(name: 'name') String name,
    5. @JsonKey.new(name: 'firstName') String firstName,
    6. @JsonKey.new(name: 'lastName') String lastName,
    7. @JsonKey.new(name: 'nationalID') String nationalID,
    8. @JsonKey.new(name: 'dateOfBirth') String dateOfBirth,
    9. @JsonKey.new(name: 'gender', fromJson: genderFromJson, toJson: genderToJson) Gender gender,
    10. @JsonKey.new(name: 'avatar') String avatar,
    11. @JsonKey.new(name: 'contacts') Contact? primaryContact,
    12. @JsonKey.new(name: 'secondaryContacts') List<Contact> secondaryContacts,
    13. @JsonKey.new(name: 'email') String email,
    14. @JsonKey.new(name: 'languages') List<String> languages,
    15. @JsonKey.new(name: 'currentOrganizationID') String currentOrganizationID,
    16. @JsonKey.new(name: 'currentProgramID') String currentProgramID,
    17. @JsonKey.new(name: 'active') bool active,
    18. @JsonKey.new(name: 'termsAccepted') bool termsAccepted,
    19. @JsonKey.new(name: 'hasSetPin') bool hasSetPin,
    20. @JsonKey.new(name: 'hasSetNickname') bool hasSetNickname,
    21. @JsonKey.new(name: 'isPhoneVerified') bool isPhoneVerified,
    22. @JsonKey.new(name: 'pinChangeRequired') bool pinChangeRequired,
    23. @JsonKey.new(name: 'pinUpdateRequired') bool pinUpdateRequired,
    24. @JsonKey.new(name: 'suspended') bool suspended,
    25. String streamToken,
    )?, {
  2. required TResult orElse(),
})

A variant of when that fallback to an orElse callback.

It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case _:
    return orElse();
}

Implementation

@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function(@JsonKey(name: 'id')  String userId, @JsonKey(name: 'healthID')  String healthId, @JsonKey(name: 'username')  String username, @JsonKey(name: 'name')  String name, @JsonKey(name: 'firstName')  String firstName, @JsonKey(name: 'lastName')  String lastName, @JsonKey(name: 'nationalID')  String nationalID, @JsonKey(name: 'dateOfBirth')  String dateOfBirth, @JsonKey(name: 'gender', fromJson: genderFromJson, toJson: genderToJson)  Gender gender, @JsonKey(name: 'avatar')  String avatar, @JsonKey(name: 'contacts')  Contact? primaryContact, @JsonKey(name: 'secondaryContacts')  List<Contact> secondaryContacts, @JsonKey(name: 'email')  String email, @JsonKey(name: 'languages')  List<String> languages, @JsonKey(name: 'currentOrganizationID')  String currentOrganizationID, @JsonKey(name: 'currentProgramID')  String currentProgramID, @JsonKey(name: 'active')  bool active, @JsonKey(name: 'termsAccepted')  bool termsAccepted, @JsonKey(name: 'hasSetPin')  bool hasSetPin, @JsonKey(name: 'hasSetNickname')  bool hasSetNickname, @JsonKey(name: 'isPhoneVerified')  bool isPhoneVerified, @JsonKey(name: 'pinChangeRequired')  bool pinChangeRequired, @JsonKey(name: 'pinUpdateRequired')  bool pinUpdateRequired, @JsonKey(name: 'suspended')  bool suspended,  String streamToken)?  $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _User() when $default != null:
return $default(_that.userId,_that.healthId,_that.username,_that.name,_that.firstName,_that.lastName,_that.nationalID,_that.dateOfBirth,_that.gender,_that.avatar,_that.primaryContact,_that.secondaryContacts,_that.email,_that.languages,_that.currentOrganizationID,_that.currentProgramID,_that.active,_that.termsAccepted,_that.hasSetPin,_that.hasSetNickname,_that.isPhoneVerified,_that.pinChangeRequired,_that.pinUpdateRequired,_that.suspended,_that.streamToken);case _:
  return orElse();

}
}