Ad and purchases enabled (still need actual testing)

This commit is contained in:
Courtney Arnold 2026-08-16 18:27:56 -05:00
parent 2fcc6dcab7
commit faf319322a
35 changed files with 1676 additions and 34 deletions

View file

@ -24,6 +24,12 @@ class OnboardingTourOverlay extends StatelessWidget {
final VoidCallback onNext;
final VoidCallback onSkip;
/// Label for the [onSkip] button — defaults to the multi-step tour's own
/// wording. A standalone, single-step spotlight (e.g. the "back up your
/// data" reminder in lib/widgets/backup_reminder.dart) isn't a "tour", so
/// it passes something more fitting like 'Close' instead.
final String skipLabel;
const OnboardingTourOverlay({
super.key,
required this.targetKeys,
@ -33,6 +39,7 @@ class OnboardingTourOverlay extends StatelessWidget {
required this.totalSteps,
required this.onNext,
required this.onSkip,
this.skipLabel = 'Skip Tour',
});
List<Rect> _targetRects() {
@ -126,14 +133,16 @@ class OnboardingTourOverlay extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Step $stepNumber of $totalSteps',
style: Theme.of(context).textTheme.labelMedium?.copyWith(
color: colorScheme.primary,
fontWeight: FontWeight.w700,
),
),
const SizedBox(height: 6),
if (totalSteps > 1) ...[
Text(
'Step $stepNumber of $totalSteps',
style: Theme.of(context).textTheme.labelMedium?.copyWith(
color: colorScheme.primary,
fontWeight: FontWeight.w700,
),
),
const SizedBox(height: 6),
],
Text(title, style: Theme.of(context).textTheme.titleLarge),
const SizedBox(height: 8),
Text(description, style: Theme.of(context).textTheme.bodyMedium),
@ -141,7 +150,7 @@ class OnboardingTourOverlay extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextButton(onPressed: onSkip, child: const Text('Skip Tour')),
TextButton(onPressed: onSkip, child: Text(skipLabel)),
FilledButton(onPressed: onNext, child: Text(isLastStep ? 'Got It' : 'Next')),
],
),