when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>(
  1. TResult $default(
    1. String? supplierID,
    2. String? profileID,
    3. String? erpSupplierID,
    4. PayablesAccount? payablesAccount,
    5. Map<String, dynamic>? supplierKYC,
    6. bool? active,
    7. SupplierAccountType? accountType,
    8. bool? underOrganization,
    9. bool? isOrganizationVerified,
    10. String? sladeCode,
    11. String? parentOrganizationID,
    12. String? organizationName,
    13. bool? hasBranches,
    14. Location? location,
    15. SupplierPartnerType? partnerType,
    16. bool? partnerSetupComplete,
    17. bool? kycSubmitted,
    )
)

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(@JsonKey(name: 'supplierID')  String? supplierID, @JsonKey(name: 'profileID')  String? profileID, @JsonKey(name: 'erpSupplierID')  String? erpSupplierID, @JsonKey(name: 'payables_account')  PayablesAccount? payablesAccount, @JsonKey(name: 'supplierKYC')  Map<String, dynamic>? supplierKYC, @JsonKey(name: 'active')  bool? active, @JsonKey(name: 'accountType', unknownEnumValue: SupplierAccountType.unknown)  SupplierAccountType? accountType, @JsonKey(name: 'underOrganization')  bool? underOrganization, @JsonKey(name: 'isOrganizationVerified')  bool? isOrganizationVerified, @JsonKey(name: 'sladeCode')  String? sladeCode, @JsonKey(name: 'parentOrganizationID')  String? parentOrganizationID, @JsonKey(name: 'organizationName')  String? organizationName, @JsonKey(name: 'hasBranches')  bool? hasBranches, @JsonKey(name: 'location')  Location? location, @JsonKey(name: 'partnerType', unknownEnumValue: SupplierPartnerType.unknown)  SupplierPartnerType? partnerType, @JsonKey(name: 'partnerSetupComplete')  bool? partnerSetupComplete, @JsonKey(name: 'kycSubmitted')  bool? kycSubmitted)  $default,) {final _that = this;
switch (_that) {
case _SupplierProfile():
return $default(_that.supplierID,_that.profileID,_that.erpSupplierID,_that.payablesAccount,_that.supplierKYC,_that.active,_that.accountType,_that.underOrganization,_that.isOrganizationVerified,_that.sladeCode,_that.parentOrganizationID,_that.organizationName,_that.hasBranches,_that.location,_that.partnerType,_that.partnerSetupComplete,_that.kycSubmitted);case _:
  throw StateError('Unexpected subclass');

}
}