when<TResult extends Object?> method
TResult
when<TResult extends Object?>(
- TResult $default(
- String? supplierID,
- String? profileID,
- String? erpSupplierID,
- PayablesAccount? payablesAccount,
- Map<
String, dynamic> ? supplierKYC, - bool? active,
- SupplierAccountType? accountType,
- bool? underOrganization,
- bool? isOrganizationVerified,
- String? sladeCode,
- String? parentOrganizationID,
- String? organizationName,
- bool? hasBranches,
- Location? location,
- SupplierPartnerType? partnerType,
- bool? partnerSetupComplete,
- 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');
}
}