HintStep class

A single tour step — data, not a widget.

Two content paths: zero-config (title/description, rendered by the default tooltip from HintTheme) and custom (tooltipBuilder, the full-customization ladder). tooltipBuilder is the only widget-typed slot in the contract — a deliberate exception to allow fully replacing a tooltip.

Annotations

Constructors

HintStep({required String targetId, List<String> moreTargets = const [], List<HintTooltip> moreTooltips = const [], String? title, String? description, TooltipPosition position = TooltipPosition.auto, Duration? waitTimeout, bool showSkip = true, HintMissingTargetPolicy? missingTargetPolicy, bool tapOnTarget = true, bool tapOnOverlay = true, void onTapTarget(HintTooltipContext ctx, TapDownDetails details)?, void onTapOverlay(HintTooltipContext ctx, TapDownDetails details)?, Widget tooltipBuilder(BuildContext context, HintStep step, HintTooltipContext ctx)?, FocusShape focusShape = FocusShape.rectangle, double focusPadding = 4.0, Duration? transitionDuration, HintCurve? transitionCurve, Rect? targetRect, Future<void> onBeforeAction()?, Future<void> onAfterAction()?})
const
HintStep.fromJson(Map<String, dynamic> json)
factory

Properties

description String?
final
focusPadding double
final
focusShape FocusShape
final
hashCode int
The hash code for this object.
no setterinherited
hasRectTarget bool
no setter
missingTargetPolicy HintMissingTargetPolicy?
Missing-target policy for this step; null — inherits HintTour.missingTargetPolicy.
final
moreTargets List<String>
Additional targets spotlighted together with targetId (multi-target step: several elements highlighted at once, one tooltip anchored to the primary targetId). The step enters the active phase only when ALL of targetIds are mounted; a scrim hole is cut over each of them.
final
moreTooltips List<HintTooltip>
Additional tooltips (multi-content): placed around the primary target alongside the primary tooltip, each on its own side. The engine guarantees they do not overlap each other or the spotlighted targets (keep-in-safe-area applies to every slot).
final
onAfterAction Future<void> Function()?
final
onBeforeAction Future<void> Function()?
final
onTapOverlay → void Function(HintTooltipContext ctx, TapDownDetails details)?
Tap on the scrim (outside any target): replaces the default tapOnOverlay behavior.
final
onTapTarget → void Function(HintTooltipContext ctx, TapDownDetails details)?
Tap on a spotlighted target: replaces the default tapOnTarget behavior. Receives the step context (actions + position in the tour) and the tap details (position — for analytics / micro-interactions).
final
position TooltipPosition
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
showSkip bool
Whether the default tooltip shows a "Skip" button on this step. Ignored on the last step of a tour (and on a single-step tour/hint): the tour is about to end anyway — "Done" does the same, so a "Skip" next to it would be redundant. Shown on intermediate steps only, and only when this flag is true.
final
tapOnOverlay bool
Whether a tap on the scrim (outside any target) advances the tour (when onTapOverlay is not set).
final
tapOnTarget bool
Whether a tap on a spotlighted target advances the tour (when onTapTarget is not set). Both taps default to "next" — the same behavior as before region distinction; set false to require an explicit button/callback.
final
targetId String
Key in the target registry — not a GlobalKey.
final
targetIds List<String>
All target ids of the step: the primary targetId + moreTargets.
no setter
targetRect Rect?
final
title String?
Zero-config title/description; ignored when tooltipBuilder is set.
final
tooltipBuilder Widget Function(BuildContext context, HintStep step, HintTooltipContext ctx)?
Fully custom tooltip. Receives the step itself (styling by targetId) and a HintTooltipContext — actions for buttons plus the position in the tour (index/count, "is last step").
final
transitionCurve HintCurve?
Entry-animation preset, see HintCurve (rung 2 of the animation ladder); null — no animation. Rung 3 (anything custom) is a tooltipBuilder with its own animation widgets.
final
transitionDuration Duration?
Entry-animation length for transitionCurve; null — the curve default (800 ms for HintCurve.sprung). Ignored without a curve.
final
waitTimeout Duration?
Wait-for-target timeout for this step; null — inherits HintTour.stepTimeout.
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
resolveMissingPolicy(HintMissingTargetPolicy tourPolicy) HintMissingTargetPolicy
The step's missing-target policy, honoring inheritance.
resolveTimeout(Duration fallback) Duration
The step's timeout, honoring inheritance.
toJson() Map<String, dynamic>
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited