Skip to content

Commit d50a933

Browse files
committed
fix: 🔨Fixed PR comments
1 parent 228af1d commit d50a933

File tree

7 files changed

+158
-152
lines changed

7 files changed

+158
-152
lines changed

lib/src/constants.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Constants {
2828
/// in bottom
2929
static const double extraAlignmentOffset = 5;
3030

31-
static const defaultTargetRadius = Radius.circular(3.0);
31+
static const Radius defaultTargetRadius = Radius.circular(3.0);
3232

3333
static const ShapeBorder defaultTargetShapeBorder = RoundedRectangleBorder(
3434
borderRadius: BorderRadius.all(Radius.circular(8)),

lib/src/enum.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ enum TooltipDefaultActionType {
9494
void onTap(ShowCaseWidgetState showCaseState) {
9595
switch (this) {
9696
case TooltipDefaultActionType.next:
97-
showCaseState.next(forceNext: true);
97+
showCaseState.next(force: true);
9898
break;
9999
case TooltipDefaultActionType.previous:
100100
showCaseState.previous();

lib/src/get_position.dart

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,23 +41,19 @@ class GetPosition {
4141
final double screenHeight;
4242
final RenderObject? rootRenderObject;
4343

44-
RenderBox? _box;
4544
Offset? _boxOffset;
4645

47-
RenderBox? get box => _box;
48-
4946
void _getRenderBox() {
5047
if (renderBox == null) return;
5148

52-
_box = renderBox;
53-
_boxOffset = _box?.localToGlobal(
49+
_boxOffset = renderBox?.localToGlobal(
5450
Offset.zero,
5551
ancestor: rootRenderObject,
5652
);
5753
}
5854

5955
bool _checkBoxOrOffsetIsNull({bool checkDy = false, bool checkDx = false}) {
60-
return _box == null ||
56+
return renderBox == null ||
6157
_boxOffset == null ||
6258
(checkDx && (_boxOffset?.dx.isNaN ?? true)) ||
6359
(checkDy && (_boxOffset?.dy.isNaN ?? true));
@@ -67,8 +63,8 @@ class GetPosition {
6763
if (_checkBoxOrOffsetIsNull(checkDy: true, checkDx: true)) {
6864
return Rect.zero;
6965
}
70-
final topLeft = _box!.size.topLeft(_boxOffset!);
71-
final bottomRight = _box!.size.bottomRight(_boxOffset!);
66+
final topLeft = renderBox!.size.topLeft(_boxOffset!);
67+
final bottomRight = renderBox!.size.bottomRight(_boxOffset!);
7268
final leftDx = topLeft.dx - padding.left;
7369
var leftDy = topLeft.dy - padding.top;
7470
if (leftDy < 0) leftDy = 0;
@@ -86,7 +82,7 @@ class GetPosition {
8682
if (_checkBoxOrOffsetIsNull(checkDy: true)) {
8783
return padding.bottom;
8884
}
89-
final bottomRight = _box!.size.bottomRight(_boxOffset!);
85+
final bottomRight = renderBox!.size.bottomRight(_boxOffset!);
9086
return bottomRight.dy + padding.bottom;
9187
}
9288

@@ -95,7 +91,7 @@ class GetPosition {
9591
if (_checkBoxOrOffsetIsNull(checkDy: true)) {
9692
return -padding.top;
9793
}
98-
final topLeft = _box!.size.topLeft(_boxOffset!);
94+
final topLeft = renderBox!.size.topLeft(_boxOffset!);
9995
return topLeft.dy - padding.top;
10096
}
10197

@@ -104,7 +100,7 @@ class GetPosition {
104100
if (_checkBoxOrOffsetIsNull(checkDx: true)) {
105101
return -padding.left;
106102
}
107-
final topLeft = _box!.size.topLeft(_boxOffset!);
103+
final topLeft = renderBox!.size.topLeft(_boxOffset!);
108104
return topLeft.dx - padding.left;
109105
}
110106

@@ -113,7 +109,7 @@ class GetPosition {
113109
if (_checkBoxOrOffsetIsNull(checkDx: true)) {
114110
return padding.right;
115111
}
116-
final bottomRight = _box!.size.bottomRight(_boxOffset!);
112+
final bottomRight = renderBox!.size.bottomRight(_boxOffset!);
117113
return bottomRight.dx + padding.right;
118114
}
119115

@@ -124,7 +120,7 @@ class GetPosition {
124120
double getCenter() => (getLeft() + getRight()) * 0.5;
125121

126122
Offset topLeft() {
127-
final box = _box;
123+
final box = renderBox;
128124
if (box == null) return Offset.zero;
129125

130126
return box.size.topLeft(
@@ -135,5 +131,5 @@ class GetPosition {
135131
);
136132
}
137133

138-
Offset getOffset() => _box?.size.center(topLeft()) ?? Offset.zero;
134+
Offset getOffset() => renderBox?.size.center(topLeft()) ?? Offset.zero;
139135
}

lib/src/showcase/showcase.dart

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -564,10 +564,11 @@ class Showcase extends StatefulWidget {
564564
}
565565

566566
class _ShowcaseState extends State<Showcase> {
567-
bool enableShowcase = true;
568-
GetPosition? position;
569-
570-
late ShowcaseController showcaseController;
567+
ShowcaseController get _controller =>
568+
showCaseWidgetState.getControllerForShowcase(
569+
widget.showcaseKey,
570+
_uniqueId,
571+
);
571572

572573
late final showCaseWidgetState = ShowCaseWidget.of(context);
573574
FloatingActionWidget? _globalFloatingActionWidget;
@@ -578,12 +579,14 @@ class _ShowcaseState extends State<Showcase> {
578579

579580
EdgeInsets get _targetPadding => widget.targetPadding;
580581

582+
final int _uniqueId = UniqueKey().hashCode;
583+
581584
@override
582585
void initState() {
583586
super.initState();
584587
initRootWidget();
585-
showcaseController = ShowcaseController(
586-
showcaseId: widget.hashCode,
588+
final showcaseController = ShowcaseController(
589+
showcaseId: _uniqueId,
587590
showcaseKey: widget.showcaseKey,
588591
showcaseConfig: widget,
589592
scrollIntoView: _scrollIntoView,
@@ -592,21 +595,20 @@ class _ShowcaseState extends State<Showcase> {
592595
showCaseWidgetState.registerShowcaseController(
593596
controller: showcaseController,
594597
key: widget.showcaseKey,
598+
showcaseId: _uniqueId,
595599
);
596600
}
597601

598-
@override
599-
void didChangeDependencies() {
600-
super.didChangeDependencies();
601-
showcaseController.showcaseConfig = widget;
602-
}
603-
604602
@override
605603
void didUpdateWidget(covariant Showcase oldWidget) {
606604
super.didUpdateWidget(oldWidget);
607-
if (oldWidget != widget) {
608-
showcaseController.showcaseConfig = widget;
609-
}
605+
if (oldWidget == widget) return;
606+
showCaseWidgetState
607+
.getControllerForShowcase(
608+
widget.showcaseKey,
609+
_uniqueId,
610+
)
611+
.showcaseConfig = widget;
610612
}
611613

612614
@override
@@ -619,7 +621,7 @@ class _ShowcaseState extends State<Showcase> {
619621
void dispose() {
620622
showCaseWidgetState.removeShowcaseController(
621623
key: widget.showcaseKey,
622-
controller: showcaseController,
624+
uniqueShowcaseKey: _uniqueId,
623625
);
624626

625627
super.dispose();
@@ -628,36 +630,35 @@ class _ShowcaseState extends State<Showcase> {
628630
void initRootWidget() {
629631
WidgetsBinding.instance.addPostFrameCallback((_) {
630632
if (!mounted) return;
631-
showcaseController
633+
_controller
632634
..rootWidgetSize = showCaseWidgetState.rootWidgetSize
633635
..rootRenderObject = showCaseWidgetState.rootRenderObject;
634636
});
635637
}
636638

637639
void startShowcase() {
638-
enableShowcase = showCaseWidgetState.enableShowcase;
640+
if (!showCaseWidgetState.enableShowcase) return;
639641

640642
recalculateRootWidgetSize();
641643

642-
if (enableShowcase) {
643-
_globalFloatingActionWidget = showCaseWidgetState
644-
.globalFloatingActionWidget(widget.showcaseKey)
645-
?.call(context);
646-
final size = MediaQuery.of(context).size;
647-
position ??= GetPosition(
648-
rootRenderObject: showcaseController.rootRenderObject,
649-
renderBox: context.findRenderObject() as RenderBox?,
650-
padding: widget.targetPadding,
651-
screenWidth: showcaseController.rootWidgetSize?.width ?? size.width,
652-
screenHeight: showcaseController.rootWidgetSize?.height ?? size.height,
653-
);
654-
}
644+
_globalFloatingActionWidget = showCaseWidgetState
645+
.globalFloatingActionWidget(widget.showcaseKey)
646+
?.call(context);
647+
final size = _controller.rootWidgetSize ?? MediaQuery.sizeOf(context);
648+
_controller.position ??= GetPosition(
649+
rootRenderObject: _controller.rootRenderObject,
650+
renderBox: context.findRenderObject() as RenderBox?,
651+
padding: widget.targetPadding,
652+
screenWidth: size.width,
653+
screenHeight: size.height,
654+
);
655655
}
656656

657657
Future<void> _scrollIntoView() async {
658658
if (!mounted) return;
659-
showcaseController.isScrollRunning = true;
660-
_updateControllerData(context);
659+
_controller.isScrollRunning = true;
660+
_updateControllerData(
661+
context.findRenderObject() as RenderBox?, MediaQuery.sizeOf(context));
661662
startShowcase();
662663
showCaseWidgetState.updateOverlay?.call(
663664
showCaseWidgetState.isShowcaseRunning,
@@ -668,8 +669,9 @@ class _ShowcaseState extends State<Showcase> {
668669
alignment: widget.scrollAlignment,
669670
);
670671
if (!mounted) return;
671-
showcaseController.isScrollRunning = false;
672-
_updateControllerData(context);
672+
_controller.isScrollRunning = false;
673+
_updateControllerData(
674+
context.findRenderObject() as RenderBox?, MediaQuery.sizeOf(context));
673675
startShowcase();
674676
showCaseWidgetState.updateOverlay?.call(
675677
showCaseWidgetState.isShowcaseRunning,
@@ -680,14 +682,15 @@ class _ShowcaseState extends State<Showcase> {
680682
WidgetsBinding.instance.addPostFrameCallback((_) {
681683
if (!mounted) return;
682684
final rootWidget = context.findRootAncestorStateOfType<State<Overlay>>();
683-
showcaseController
685+
_controller
684686
..rootRenderObject =
685687
rootWidget?.context.findRenderObject() as RenderBox?
686688
..rootWidgetSize = rootWidget == null
687689
? MediaQuery.of(context).size
688-
: showcaseController.rootRenderObject?.size;
689-
if (!enableShowcase) return;
690-
_updateControllerData(context);
690+
: _controller.rootRenderObject?.size;
691+
if (!showCaseWidgetState.enableShowcase) return;
692+
_updateControllerData(
693+
context.findRenderObject() as RenderBox?, MediaQuery.sizeOf(context));
691694
showCaseWidgetState.updateOverlay?.call(
692695
showCaseWidgetState.isShowcaseRunning,
693696
);
@@ -725,10 +728,9 @@ class _ShowcaseState extends State<Showcase> {
725728
? 0.0
726729
: max(0.0, widget.blurValue ?? showCaseWidgetState.blurValue);
727730

728-
showcaseController
729-
..position = position!
731+
_controller
730732
..blur = blur
731-
..getToolTipWidget = showcaseController.isScrollRunning
733+
..getToolTipWidget = _controller.isScrollRunning
732734
? [
733735
Center(child: widget.scrollLoadingWidget),
734736
]
@@ -746,8 +748,7 @@ class _ShowcaseState extends State<Showcase> {
746748
targetPadding: widget.targetPadding,
747749
),
748750
ToolTipWidget(
749-
key: ValueKey(showcaseController.showcaseId),
750-
position: position,
751+
key: ValueKey(_controller.showcaseId),
751752
title: widget.title,
752753
titleTextAlign: widget.titleTextAlign,
753754
description: widget.description,
@@ -785,7 +786,7 @@ class _ShowcaseState extends State<Showcase> {
785786
tooltipActionConfig: _getTooltipActionConfig(),
786787
tooltipActions: _getTooltipActions(),
787788
targetPadding: widget.targetPadding,
788-
showcaseController: showcaseController,
789+
showcaseController: _controller,
789790
),
790791
if (_getFloatingActionWidget != null) _getFloatingActionWidget!,
791792
];
@@ -837,33 +838,32 @@ class _ShowcaseState extends State<Showcase> {
837838
const TooltipActionConfig();
838839
}
839840

840-
void _updateControllerData(BuildContext context) {
841-
final size =
842-
showcaseController.rootWidgetSize ?? MediaQuery.of(context).size;
843-
position = GetPosition(
844-
rootRenderObject: showcaseController.rootRenderObject,
845-
renderBox: context.findRenderObject() as RenderBox?,
841+
void _updateControllerData(
842+
RenderBox? renderBox,
843+
Size screenSize,
844+
) {
845+
final size = _controller.rootWidgetSize ?? screenSize;
846+
final position = GetPosition(
847+
rootRenderObject: _controller.rootRenderObject,
848+
renderBox: renderBox,
846849
padding: widget.targetPadding,
847850
screenWidth: size.width,
848851
screenHeight: size.height,
849852
);
850-
showcaseController
851-
..position = position!
853+
_controller
854+
..position = position
852855
..linkedShowcaseDataModel = LinkedShowcaseDataModel(
853-
rect: showcaseController.isScrollRunning
854-
? Rect.zero
855-
: position!.getRect(),
856+
rect: _controller.isScrollRunning ? Rect.zero : position.getRect(),
856857
radius: _targetBorderRadius,
857-
overlayPadding: showcaseController.isScrollRunning
858-
? EdgeInsets.zero
859-
: _targetPadding,
858+
overlayPadding:
859+
_controller.isScrollRunning ? EdgeInsets.zero : _targetPadding,
860860
isCircle: _isCircle,
861861
);
862862

863863
buildOverlayOnTarget(
864-
position!.getOffset(),
865-
position!.getRect().size,
866-
position!.getRect(),
864+
position.getOffset(),
865+
position.getRect().size,
866+
position.getRect(),
867867
size,
868868
);
869869
}

0 commit comments

Comments
 (0)