whenOrNull<TResult extends Object?> method

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

A variant of when that fallback to returning null

It is equivalent to doing:

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

Implementation

@optionalTypeArgs TResult? whenOrNull<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,) {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 null;

}
}