Skip to content

Add optional pulse animation around the target cutout for interactive showcases #658

Description

@noacavalcante

Hi 👋

First of all, thanks for this package. It works really well and has been very useful for building onboarding flows in my Flutter app.

I have a use case where some showcase steps do not use a “Next” button. Instead, the user is expected to interact directly with the highlighted target area.

For example, I use something similar to:

Showcase.withWidget(
key: targetKey,
disableBarrierInteraction: true,
disableDefaultTargetGestures: false,
disposeOnTap: false,
onTargetClick: () {
// Let the user interact with the highlighted widget.
},
container: MyTooltipCard(
hideNextAction: true,
actionLabel: 'Try it yourself',
),
child: child,
)

The problem is that even with a label like “Try it yourself”, some users do not immediately understand that they are supposed to tap the highlighted area itself.

It would be useful to have an optional pulse/ripple animation around the target cutout, rendered as part of the overlay/barrier/scrim layer, not as a wrapper around the child widget.

Something similar to:

Showcase.withWidget(
key: targetKey,
targetPulse: const TargetPulseConfig(
enabled: true,
color: Colors.white,
duration: Duration(milliseconds: 1400),
strokeWidth: 2,
blurRadius: 12,
),
// ...
)

The important part is that the pulse should be drawn around the highlighted hole/cutout itself, using the same target shape, border radius, and padding as the showcase target.

I tried implementing this outside the package by wrapping the child or by adding my own OverlayEntry, but both approaches are fragile.

This feature would make interactive showcase steps much clearer, especially when the expected action is “tap the highlighted area” instead of pressing a tooltip button.

Expected behavior:

optional pulse/ripple animation around the target cutout;
rendered above the scrim/barrier but visually attached to the cutout;
respects targetPadding, targetShapeBorder, and targetBorderRadius;
can be customized or disabled;
works with Showcase.withWidget and the default showcase if possible.

Would you be open to adding something like this?

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs community feedbackPlease react with 👍 or comment if this enhancement would be valuable for your use case.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions