when<TResult extends Object?> method
- @optionalTypeArgs
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( String type, @ElementConverter() Element? card, @JsonKey(name: "au_becs_debit")@ElementConverter() Element? auBecsDebit, @ElementConverter() Element? fpx, @JsonKey(name: "fpx[bank]") String? fpxBank, @JsonKey(name: "netbanking[bank]") String? netbankingBank, @ElementConverter() Element? ideal, @JsonKey(name: "ideal[bank]") String? idealBank, @JsonKey(name: "sepa_debit")@ElementConverter() Element? sepaDebit, @JsonKey(name: "sepa_debit[iban]") String? sepaDebitIban, @JsonKey(name: "upi[vpa]") String? upiVpa, @JsonKey(name: "billing_details") BillingDetails? billingDetails) $default,) {final _that = this;
switch (_that) {
case _CreatePaymentMethodData():
return $default(_that.type,_that.card,_that.auBecsDebit,_that.fpx,_that.fpxBank,_that.netbankingBank,_that.ideal,_that.idealBank,_that.sepaDebit,_that.sepaDebitIban,_that.upiVpa,_that.billingDetails);case _:
throw StateError('Unexpected subclass');
}
}