Beacon class Hints

A pulsing dot that draws the eye, and opens a hint when tapped.

The quiet alternative to a tour: leave one next to a feature people keep missing, and let them find it in their own time.

Beacon(
  message: 'Long-press a shift to duplicate it',
  child: const Icon(Icons.calendar_month),
)

With no child the beacon is just the dot, which is what you want when it sits in a Stack over something else. With a child, the dot is positioned at alignment over it.

The pulse stops under MediaQueryData.disableAnimations, and the dot carries a semantic label so it is not an invisible affordance to a screen reader.

Testing

A pulsing beacon always has a frame scheduled, so tester.pumpAndSettle() on a page containing one never returns. Either pass autoStart: false in widget tests, or pump a fixed number of frames:

await tester.pump(const Duration(milliseconds: 300));
Inheritance

Constructors

Beacon({String? message, String? title, HintContentBuilder? contentBuilder, Widget? child, Color? color, double size = 10, AlignmentGeometry alignment = Alignment.topRight, Duration period = const Duration(milliseconds: 1800), bool autoStart = true, int? pulseCount, HintDirection direction = HintDirection.auto, HintThemeData? theme, bool interactive = false, String semanticsLabel = 'More information', VoidCallback? onShow, VoidCallback? onDismiss, Key? key})
Creates a beacon.
const

Properties

alignment AlignmentGeometry
Where the dot sits over child.
final
autoStart bool
Whether the pulse runs on its own.
final
child Widget?
The widget the dot is placed over.
final
color Color?
The dot's colour. Defaults to the theme's background colour, which is the same colour the bubble it opens will be.
final
contentBuilder HintContentBuilder?
Rich content for the hint the beacon opens.
final
direction HintDirection
Which side the hint prefers.
final
hashCode int
The hash code for this object.
no setterinherited
interactive bool
Whether the hint's bubble may contain interactive content.
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
message String?
Body text of the hint the beacon opens.
final
onDismiss VoidCallback?
Called when the hint closes.
final
onShow VoidCallback?
Called when the hint opens.
final
period Duration
How long one pulse takes.
final
pulseCount int?
How many times to pulse before settling into a static dot.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
semanticsLabel String
Screen-reader label for the dot.
final
size double
Diameter of the solid dot. The ring grows to twice this.
final
theme HintThemeData?
Visual overrides for the hint and the dot.
final
title String?
Title of the hint the beacon opens.
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<Beacon>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

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