start method

void start(
  1. BuildContext context,
  2. List<OnboardingStep> onboardingSteps, {
  3. void onStepChanged(
    1. int index
    )?,
  4. VoidCallback? onFinish,
  5. VoidCallback? onSkip,
  6. double defaultSpotlightHorizontalPadding = _kDefaultSpotlightHorizontalPadding,
  7. String? skipSheetTitle,
  8. String? skipSheetContinueButtonText,
  9. String? skipSheetSkipButtonText,
  10. String nextText = 'OK',
  11. String skipText = 'Skip',
  12. String finishText = 'Finish',
})

Starts the onboarding flow with the given onboardingSteps.

The context is used to insert overlay entries for tooltips and spotlights. Optional callbacks can be provided:

  • onStepChanged: Called when the user moves to a different step
  • onFinish: Called when the user completes all steps
  • onSkip: Called when the user skips the onboarding

You can customize the skip confirmation sheet with skipSheetTitle, skipSheetContinueButtonText, and skipSheetSkipButtonText.

Implementation

void start(
  BuildContext context,
  List<OnboardingStep> onboardingSteps, {
  void Function(int index)? onStepChanged,
  VoidCallback? onFinish,
  VoidCallback? onSkip,
  double defaultSpotlightHorizontalPadding =
      _kDefaultSpotlightHorizontalPadding,
  String? skipSheetTitle,
  String? skipSheetContinueButtonText,
  String? skipSheetSkipButtonText,
  String nextText = 'OK',
  String skipText = 'Skip',
  String finishText = 'Finish',
}) {
  // Clean any previous onboarding to avoid duplicate GlobalKeys/overlays.
  dismissSilently();
  _log('start() called with ${onboardingSteps.length} steps');
  if (onboardingSteps.isNotEmpty) {
    _logKeyState('firstStepKey', onboardingSteps.first.targetKey);
  }

  _context = context;
  _onStepChanged = onStepChanged;
  _onFinish = onFinish;
  _onSkip = onSkip;
  _defaultSpotlightHorizontalPadding = defaultSpotlightHorizontalPadding;
  _skipSheetTitle = skipSheetTitle;
  _skipSheetContinueButtonText = skipSheetContinueButtonText;
  _skipSheetSkipButtonText = skipSheetSkipButtonText;
  _nextText = nextText;
  _skipText = skipText;
  _finishText = finishText;
  steps = onboardingSteps;
  if (steps.isEmpty) return;

  _currentIndex = 0;
  _isActive = true;
  _installGlobalKeyDebugHook();
  _currentTargetRect = _measureTargetRect(currentStep.targetKey);
  if (_currentTargetRect != null) {
    _insertTooltipOverlay();
  } else {
    _waitForTargetAndShow();
  }
}