Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a refresh function to TutorialCoachMark and add unFocusAnimationDuration to TargetFocus #115

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/src/target/target_focus.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class TargetFocus {
this.alignSkip,
this.paddingFocus,
this.focusAnimationDuration,
this.unFocusAnimationDuration,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its already in the newest version 1.2.2

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In 1.2.2, the unFocusAnimationDuration is only in TutorialCoachMark. I add it to the TargetFocus, so that the unFocusAnimationDuration can be adjust in each TargetFocus.

this.pulseVariation,
}) : assert(keyTarget != null || targetPosition != null);

Expand All @@ -34,6 +35,7 @@ class TargetFocus {
final AlignmentGeometry? alignSkip;
final double? paddingFocus;
final Duration? focusAnimationDuration;
final Duration? unFocusAnimationDuration;
final Tween<double>? pulseVariation;

@override
Expand Down
30 changes: 28 additions & 2 deletions lib/src/widgets/animated_focus_light.dart
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,30 @@ abstract class AnimatedFocusLightState extends State<AnimatedFocusLight>

void previous() => _tapHandler(goNext: false);

void refresh() {
var targetPosition = getTargetCurrent(_targetFocus);

if (targetPosition == null) {
_finish();
return;
}

setState(() {
_targetPosition = getTargetCurrent(_targetFocus);

_positioned = Offset(
targetPosition.offset.dx + (targetPosition.size.width / 2),
targetPosition.offset.dy + (targetPosition.size.height / 2),
);

if (targetPosition.size.height > targetPosition.size.width) {
_sizeCircle = targetPosition.size.height * 0.6 + _getPaddingFocus();
} else {
_sizeCircle = targetPosition.size.width * 0.6 + _getPaddingFocus();
}
});
}

Future _tapHandler({
bool goNext = true,
bool targetTap = false,
Expand Down Expand Up @@ -261,7 +285,8 @@ class AnimatedStaticFocusLightState extends AnimatedFocusLightState {
});

_controller.forward();
_controller.duration = widget.unFocusAnimationDuration ??
_controller.duration = _targetFocus.unFocusAnimationDuration ??
widget.unFocusAnimationDuration ??
_targetFocus.focusAnimationDuration ??
widget.focusAnimationDuration ??
defaultFocusAnimationDuration;
Expand Down Expand Up @@ -400,7 +425,8 @@ class AnimatedPulseFocusLightState extends AnimatedFocusLightState {
});

_controller.forward();
_controller.duration = widget.unFocusAnimationDuration ??
_controller.duration = _targetFocus.unFocusAnimationDuration ??
widget.unFocusAnimationDuration ??
_targetFocus.focusAnimationDuration ??
widget.focusAnimationDuration ??
defaultFocusAnimationDuration;
Expand Down
2 changes: 2 additions & 0 deletions lib/src/widgets/tutorial_coach_mark_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -246,4 +246,6 @@ class TutorialCoachMarkWidgetState extends State<TutorialCoachMarkWidget>
void next() => _focusLightKey.currentState?.next();

void previous() => _focusLightKey.currentState?.previous();

void refresh() => _focusLightKey.currentState?.refresh();
}
2 changes: 2 additions & 0 deletions lib/tutorial_coach_mark.dart
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ class TutorialCoachMark {

void previous() => _widgetKey.currentState?.previous();

void refresh() => _widgetKey.currentState?.refresh();

void _removeOverlay() {
_overlayEntry?.remove();
_overlayEntry = null;
Expand Down