showMultipleRewardOptions static method

void showMultipleRewardOptions({
  1. required BuildContext context,
  2. required dynamic onRewardEarned(
    1. String rewardType,
    2. int amount
    ),
  3. VoidCallback? onAdFailed,
})

Show multiple reward options dialog

Implementation

static void showMultipleRewardOptions({
  required BuildContext context,
  required Function(String rewardType, int amount) onRewardEarned,
  VoidCallback? onAdFailed,
}) {
  if (config.rewardConfigs.isEmpty) {
    onAdFailed?.call();
    return;
  }

  if (!canShowRewarded() || !AivoryAdControl.instance.isRewardedAdLoaded()) {
    onAdFailed?.call();
    return;
  }

  showDialog(
    context: context,
    builder:
        (context) => AlertDialog(
          title: const Text('Choose Your Reward'),
          content: Column(
            mainAxisSize: MainAxisSize.min,
            children:
                config.rewardConfigs.entries.map((entry) {
                  final rewardType = entry.key;
                  final rewardConfig = entry.value;

                  return ListTile(
                    title: Text(
                      '${rewardConfig.rewardAmount} ${rewardConfig.rewardType}',
                    ),
                    subtitle: Text(rewardConfig.description),
                    onTap: () {
                      Navigator.pop(context);
                      _showRewardedAdForType(
                        rewardType,
                        rewardConfig,
                        onRewardEarned,
                        onAdFailed,
                      );
                    },
                  );
                }).toList(),
          ),
          actions: [
            TextButton(
              onPressed: () => Navigator.pop(context),
              child: const Text('Cancel'),
            ),
          ],
        ),
  );
}