ComebackBundleCard constructor

ComebackBundleCard({
  1. Key? key,
  2. required String title,
  3. required String body,
  4. required String absenceLabel,
  5. required List<MilestoneReward> rewards,
  6. required VoidCallback onClaim,
  7. String? expiryLabel,
  8. bool isExpired = false,
  9. String? badgeLabel,
  10. String claimLabel = 'Claim Bundle',
  11. VoidCallback? onViewOffer,
  12. String viewOfferLabel = 'View Offer',
  13. String? semanticLabel,
})

Implementation

ComebackBundleCard({
  super.key,
  required this.title,
  required this.body,
  required this.absenceLabel,
  required this.rewards,
  required this.onClaim,
  this.expiryLabel,
  this.isExpired = false,
  this.badgeLabel,
  this.claimLabel = 'Claim Bundle',
  this.onViewOffer,
  this.viewOfferLabel = 'View Offer',
  this.semanticLabel,
}) {
  if (title.trim().isEmpty) {
    throw ArgumentError.value(title, 'title', 'must not be empty');
  }
  if (body.trim().isEmpty) {
    throw ArgumentError.value(body, 'body', 'must not be empty');
  }
  if (absenceLabel.trim().isEmpty) {
    throw ArgumentError.value(
      absenceLabel,
      'absenceLabel',
      'must not be empty',
    );
  }
  if (claimLabel.trim().isEmpty || viewOfferLabel.trim().isEmpty) {
    throw ArgumentError('action labels must not be empty');
  }
  for (final reward in rewards) {
    if (reward.label.trim().isEmpty) {
      throw ArgumentError.value(
        reward.label,
        'rewards',
        'label must not be empty',
      );
    }
    if (reward.amountLabel != null && reward.amountLabel!.trim().isEmpty) {
      throw ArgumentError.value(
        reward.amountLabel,
        'rewards',
        'amountLabel must not be empty when provided',
      );
    }
  }
}