when<T> method

T when<T>({
  1. required T success(
    1. IapReceipt receipt
    ),
  2. required T cancelled(),
  3. required T failure(
    1. IapFailure failure
    ),
})

Handle success, cancelled, and failure cases separately.

result.when(
  success: (receipt) => goToHome(),
  cancelled: () => showToast('Cancelled'),
  failure: (failure) => showError(failure.message),
);

Implementation

T when<T>({
  required T Function(IapReceipt receipt) success,
  required T Function() cancelled,
  required T Function(IapFailure failure) failure,
}) {
  final receipt = _receipt;
  if (_success && receipt != null) {
    return success(receipt);
  }
  if (_failure?.isCancelled ?? false) {
    return cancelled();
  }
  return failure(_failure ??
      const IapFailure(code: 'unknown', message: 'Unknown error'));
}