@@ -3,15 +3,14 @@ import 'dart:math';
33
44import 'package:flutter/material.dart' ;
55import 'package:flutter_smart_dialog/src/data/dialog_info.dart' ;
6+ import 'package:flutter_smart_dialog/src/data/show_param.dart' ;
67import 'package:flutter_smart_dialog/src/data/smart_tag.dart' ;
78import 'package:flutter_smart_dialog/src/helper/dialog_proxy.dart' ;
89import 'package:flutter_smart_dialog/src/helper/monitor_widget_helper.dart' ;
910import 'package:flutter_smart_dialog/src/helper/route_record.dart' ;
1011import 'package:flutter_smart_dialog/src/kit/view_utils.dart' ;
11- import 'package:flutter_smart_dialog/src/widget/attach_dialog_widget.dart' ;
1212
1313import '../config/enum_config.dart' ;
14- import '../data/animation_param.dart' ;
1514import '../data/base_dialog.dart' ;
1615import '../data/notify_info.dart' ;
1716import '../kit/debounce_utils.dart' ;
@@ -24,159 +23,117 @@ class CustomDialog extends BaseDialog {
2423 CustomDialog ({required SmartOverlayEntry overlayEntry}) : super (overlayEntry);
2524
2625 Future <T ?> show <T >({
27- required Widget widget,
28- required Alignment alignment,
29- required bool usePenetrate,
30- required bool useAnimation,
31- required Duration animationTime,
32- required SmartAnimationType animationType,
33- required List <SmartNonAnimationType > nonAnimationTypes,
34- required AnimationBuilder ? animationBuilder,
35- required Color maskColor,
36- required bool clickMaskDismiss,
37- required bool debounce,
38- required Widget ? maskWidget,
39- required VoidCallback ? onDismiss,
40- required VoidCallback ? onMask,
41- required Duration ? displayTime,
42- required String ? tag,
43- required bool keepSingle,
44- required bool permanent,
45- required bool useSystem,
46- required bool bindPage,
47- required BuildContext ? bindWidget,
48- required Rect ? ignoreArea,
49- required SmartBackType ? backType,
50- required SmartOnBack ? onBack,
26+ required SmartShowCustomParam param,
5127 }) {
52- if (DebounceUtils .instance.banContinue (DebounceType .custom, debounce)) {
28+ if (DebounceUtils .instance
29+ .banContinue (DebounceType .custom, param.debounce)) {
5330 return Future .value (null );
5431 }
5532
5633 final dialogInfo = _handleMustOperate (
57- tag: tag,
58- keepSingle: keepSingle,
59- debounce: debounce,
34+ tag: param. tag,
35+ keepSingle: param. keepSingle,
36+ debounce: param. debounce,
6037 type: DialogType .custom,
61- permanent: permanent,
62- useSystem: useSystem,
63- bindPage: bindPage,
64- bindWidget: bindWidget,
65- displayTime: displayTime,
66- backType: backType,
67- onBack: onBack,
38+ permanent: param. permanent,
39+ useSystem: param. useSystem,
40+ bindPage: param. bindPage,
41+ bindWidget: param. bindWidget,
42+ displayTime: param. displayTime,
43+ backType: param. backType,
44+ onBack: param. onBack,
6845 );
6946 return mainDialog.show <T >(
70- widget: widget,
71- alignment: alignment,
72- usePenetrate: usePenetrate,
73- useAnimation: useAnimation,
74- animationTime: animationTime,
75- animationType: animationType,
76- nonAnimationTypes: nonAnimationTypes,
77- animationBuilder: animationBuilder,
78- maskColor: maskColor,
79- maskWidget: maskWidget,
80- onDismiss: _handleDismiss (onDismiss, displayTime, dialogInfo),
81- useSystem: useSystem,
82- reuse: true ,
83- awaitOverType: SmartDialog .config.custom.awaitOverType,
84- maskTriggerType: SmartDialog .config.custom.maskTriggerType,
85- ignoreArea: ignoreArea,
86- keepSingle: keepSingle,
87- onMask: () {
88- onMask? .call ();
89- if (! clickMaskDismiss ||
90- DebounceUtils .instance.banContinue (DebounceType .mask, true ) ||
91- permanent) {
92- return ;
93- }
94- dismiss (closeType: CloseType .mask, tag: dialogInfo.tag);
95- },
47+ param: SmartMainDialogParam (
48+ widget: param.widget,
49+ alignment: param.alignment,
50+ clickMaskDismiss: param.clickMaskDismiss,
51+ animationType: param.animationType,
52+ nonAnimationTypes: param.nonAnimationTypes,
53+ animationBuilder: param.animationBuilder,
54+ usePenetrate: param.usePenetrate,
55+ useAnimation: param.useAnimation,
56+ animationTime: param.animationTime,
57+ maskColor: param.maskColor,
58+ maskWidget: param.maskWidget,
59+ onDismiss:
60+ _handleDismiss (param.onDismiss, param.displayTime, dialogInfo),
61+ useSystem: param.useSystem,
62+ reuse: true ,
63+ awaitOverType: SmartDialog .config.custom.awaitOverType,
64+ maskTriggerType: SmartDialog .config.custom.maskTriggerType,
65+ ignoreArea: param.ignoreArea,
66+ keepSingle: param.keepSingle,
67+ onMask: () {
68+ param.onMask? .call ();
69+ if (! param.clickMaskDismiss ||
70+ DebounceUtils .instance.banContinue (DebounceType .mask, true ) ||
71+ param.permanent) {
72+ return ;
73+ }
74+ dismiss (closeType: CloseType .mask, tag: dialogInfo.tag);
75+ },
76+ ),
9677 );
9778 }
9879
9980 Future <T ?> showAttach <T >({
100- required BuildContext ? targetContext,
101- required Widget widget,
102- required TargetBuilder ? targetBuilder,
103- required ReplaceBuilder ? replaceBuilder,
104- required AdjustBuilder ? adjustBuilder,
105- required Alignment alignment,
106- required bool usePenetrate,
107- required bool useAnimation,
108- required Duration animationTime,
109- required SmartAnimationType animationType,
110- required List <SmartNonAnimationType > nonAnimationTypes,
111- required AnimationBuilder ? animationBuilder,
112- required ScalePointBuilder ? scalePointBuilder,
113- required Color maskColor,
114- required bool clickMaskDismiss,
115- required Widget ? maskWidget,
116- required Rect ? maskIgnoreArea,
117- required VoidCallback ? onMask,
118- required bool debounce,
119- required HighlightBuilder ? highlightBuilder,
120- required VoidCallback ? onDismiss,
121- required Duration ? displayTime,
122- required String ? tag,
123- required bool keepSingle,
124- required bool permanent,
125- required bool useSystem,
126- required bool bindPage,
127- required BuildContext ? bindWidget,
128- required SmartBackType ? backType,
129- required SmartOnBack ? onBack,
81+ required SmartShowAttachParam param,
13082 }) {
131- if (DebounceUtils .instance.banContinue (DebounceType .attach, debounce)) {
83+ if (DebounceUtils .instance
84+ .banContinue (DebounceType .attach, param.debounce)) {
13285 return Future .value (null );
13386 }
13487
13588 final dialogInfo = _handleMustOperate (
136- tag: tag,
137- keepSingle: keepSingle,
138- debounce: debounce,
89+ tag: param. tag,
90+ keepSingle: param. keepSingle,
91+ debounce: param. debounce,
13992 type: DialogType .attach,
140- permanent: permanent,
141- useSystem: useSystem,
142- bindPage: bindPage,
143- bindWidget: bindWidget,
144- displayTime: displayTime,
145- backType: backType,
146- onBack: onBack,
93+ permanent: param. permanent,
94+ useSystem: param. useSystem,
95+ bindPage: param. bindPage,
96+ bindWidget: param. bindWidget,
97+ displayTime: param. displayTime,
98+ backType: param. backType,
99+ onBack: param. onBack,
147100 );
148101 return mainDialog.showAttach <T >(
149- targetContext: targetContext,
150- widget: widget,
151- targetBuilder: targetBuilder,
152- replaceBuilder: replaceBuilder,
153- adjustBuilder: adjustBuilder,
154- alignment: alignment,
155- usePenetrate: usePenetrate,
156- useAnimation: useAnimation,
157- animationTime: animationTime,
158- animationType: animationType,
159- nonAnimationTypes: nonAnimationTypes,
160- animationBuilder: animationBuilder,
161- scalePointBuilder: scalePointBuilder,
162- highlightBuilder: highlightBuilder,
163- maskColor: maskColor,
164- maskWidget: maskWidget,
165- maskIgnoreArea: maskIgnoreArea,
166- onDismiss: _handleDismiss (onDismiss, displayTime, dialogInfo),
167- useSystem: useSystem,
168- awaitOverType: SmartDialog .config.attach.awaitOverType,
169- maskTriggerType: SmartDialog .config.attach.maskTriggerType,
170- keepSingle: keepSingle,
171- onMask: () {
172- onMask? .call ();
173- if (! clickMaskDismiss ||
174- DebounceUtils .instance.banContinue (DebounceType .mask, true ) ||
175- permanent) {
176- return ;
177- }
178- dismiss (closeType: CloseType .mask, tag: dialogInfo.tag);
179- },
102+ param: SmartMainAttachParam (
103+ targetContext: param.targetContext,
104+ widget: param.widget,
105+ targetBuilder: param.targetBuilder,
106+ replaceBuilder: param.replaceBuilder,
107+ adjustBuilder: param.adjustBuilder,
108+ alignment: param.alignment,
109+ clickMaskDismiss: param.clickMaskDismiss,
110+ animationType: param.animationType,
111+ nonAnimationTypes: param.nonAnimationTypes,
112+ animationBuilder: param.animationBuilder,
113+ scalePointBuilder: param.scalePointBuilder,
114+ usePenetrate: param.usePenetrate,
115+ useAnimation: param.useAnimation,
116+ animationTime: param.animationTime,
117+ maskColor: param.maskColor,
118+ maskWidget: param.maskWidget,
119+ maskIgnoreArea: param.maskIgnoreArea,
120+ onMask: () {
121+ param.onMask? .call ();
122+ if (! param.clickMaskDismiss ||
123+ DebounceUtils .instance.banContinue (DebounceType .mask, true ) ||
124+ param.permanent) {
125+ return ;
126+ }
127+ dismiss (closeType: CloseType .mask, tag: dialogInfo.tag);
128+ },
129+ highlightBuilder: param.highlightBuilder,
130+ onDismiss:
131+ _handleDismiss (param.onDismiss, param.displayTime, dialogInfo),
132+ maskTriggerType: SmartDialog .config.attach.maskTriggerType,
133+ useSystem: param.useSystem,
134+ awaitOverType: SmartDialog .config.attach.awaitOverType,
135+ keepSingle: param.keepSingle,
136+ ),
180137 );
181138 }
182139
0 commit comments