Skip to content

Commit 14bdf3b

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

File tree

7 files changed

+154
-152
lines changed

7 files changed

+154
-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: 58 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,34 @@ 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(context.findRenderObject() as RenderBox?);
661661
startShowcase();
662662
showCaseWidgetState.updateOverlay?.call(
663663
showCaseWidgetState.isShowcaseRunning,
@@ -668,8 +668,8 @@ class _ShowcaseState extends State<Showcase> {
668668
alignment: widget.scrollAlignment,
669669
);
670670
if (!mounted) return;
671-
showcaseController.isScrollRunning = false;
672-
_updateControllerData(context);
671+
_controller.isScrollRunning = false;
672+
_updateControllerData(context.findRenderObject() as RenderBox?);
673673
startShowcase();
674674
showCaseWidgetState.updateOverlay?.call(
675675
showCaseWidgetState.isShowcaseRunning,
@@ -680,14 +680,14 @@ class _ShowcaseState extends State<Showcase> {
680680
WidgetsBinding.instance.addPostFrameCallback((_) {
681681
if (!mounted) return;
682682
final rootWidget = context.findRootAncestorStateOfType<State<Overlay>>();
683-
showcaseController
683+
_controller
684684
..rootRenderObject =
685685
rootWidget?.context.findRenderObject() as RenderBox?
686686
..rootWidgetSize = rootWidget == null
687687
? MediaQuery.of(context).size
688-
: showcaseController.rootRenderObject?.size;
689-
if (!enableShowcase) return;
690-
_updateControllerData(context);
688+
: _controller.rootRenderObject?.size;
689+
if (!showCaseWidgetState.enableShowcase) return;
690+
_updateControllerData(context.findRenderObject() as RenderBox?);
691691
showCaseWidgetState.updateOverlay?.call(
692692
showCaseWidgetState.isShowcaseRunning,
693693
);
@@ -725,10 +725,9 @@ class _ShowcaseState extends State<Showcase> {
725725
? 0.0
726726
: max(0.0, widget.blurValue ?? showCaseWidgetState.blurValue);
727727

728-
showcaseController
729-
..position = position!
728+
_controller
730729
..blur = blur
731-
..getToolTipWidget = showcaseController.isScrollRunning
730+
..getToolTipWidget = _controller.isScrollRunning
732731
? [
733732
Center(child: widget.scrollLoadingWidget),
734733
]
@@ -746,8 +745,7 @@ class _ShowcaseState extends State<Showcase> {
746745
targetPadding: widget.targetPadding,
747746
),
748747
ToolTipWidget(
749-
key: ValueKey(showcaseController.showcaseId),
750-
position: position,
748+
key: ValueKey(_controller.showcaseId),
751749
title: widget.title,
752750
titleTextAlign: widget.titleTextAlign,
753751
description: widget.description,
@@ -785,7 +783,7 @@ class _ShowcaseState extends State<Showcase> {
785783
tooltipActionConfig: _getTooltipActionConfig(),
786784
tooltipActions: _getTooltipActions(),
787785
targetPadding: widget.targetPadding,
788-
showcaseController: showcaseController,
786+
showcaseController: _controller,
789787
),
790788
if (_getFloatingActionWidget != null) _getFloatingActionWidget!,
791789
];
@@ -837,33 +835,31 @@ class _ShowcaseState extends State<Showcase> {
837835
const TooltipActionConfig();
838836
}
839837

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?,
838+
void _updateControllerData(
839+
RenderBox? renderBox,
840+
) {
841+
final size = _controller.rootWidgetSize ?? MediaQuery.sizeOf(context);
842+
final position = GetPosition(
843+
rootRenderObject: _controller.rootRenderObject,
844+
renderBox: renderBox,
846845
padding: widget.targetPadding,
847846
screenWidth: size.width,
848847
screenHeight: size.height,
849848
);
850-
showcaseController
851-
..position = position!
849+
_controller
850+
..position = position
852851
..linkedShowcaseDataModel = LinkedShowcaseDataModel(
853-
rect: showcaseController.isScrollRunning
854-
? Rect.zero
855-
: position!.getRect(),
852+
rect: _controller.isScrollRunning ? Rect.zero : position.getRect(),
856853
radius: _targetBorderRadius,
857-
overlayPadding: showcaseController.isScrollRunning
858-
? EdgeInsets.zero
859-
: _targetPadding,
854+
overlayPadding:
855+
_controller.isScrollRunning ? EdgeInsets.zero : _targetPadding,
860856
isCircle: _isCircle,
861857
);
862858

863859
buildOverlayOnTarget(
864-
position!.getOffset(),
865-
position!.getRect().size,
866-
position!.getRect(),
860+
position.getOffset(),
861+
position.getRect().size,
862+
position.getRect(),
867863
size,
868864
);
869865
}

0 commit comments

Comments
 (0)