Skip to content

Commit

Permalink
toast add some param
Browse files Browse the repository at this point in the history
  • Loading branch information
xdd666t committed Jun 9, 2023
1 parent 4aa6210 commit abfc0a9
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 15 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# [4.9.1]
* fix [#132](https://github.com/fluttercandies/flutter_smart_dialog/issues/132)
* optimize nonAnimationTypes
* toast add some param

# [4.9.0]
* Breaking Change
Expand Down
25 changes: 18 additions & 7 deletions lib/src/compatible/compatible_smart_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ class CompatibleSmartDialog {
factory CompatibleSmartDialog() => instance;
static CompatibleSmartDialog? _instance;

static CompatibleSmartDialog get instance => _instance ??= CompatibleSmartDialog._();
static CompatibleSmartDialog get instance =>
_instance ??= CompatibleSmartDialog._();

CompatibleSmartDialog._();

Expand Down Expand Up @@ -281,7 +282,9 @@ class CompatibleSmartDialog {
widget: widget,
alignment: alignmentTemp ?? Alignment.bottomCenter,
clickMaskDismiss: clickBgDismissTemp ?? config.clickBgDismiss,
animationType: isLoadingTemp ?? false ? SmartAnimationType.fade : SmartAnimationType.scale,
animationType: isLoadingTemp ?? false
? SmartAnimationType.fade
: SmartAnimationType.scale,
nonAnimationTypes: const [],
animationBuilder: null,
scalePointBuilder: null,
Expand All @@ -291,9 +294,10 @@ class CompatibleSmartDialog {
maskColor: maskColorTemp ?? config.maskColor,
maskWidget: maskWidgetTemp ?? config.maskWidget,
debounce: debounceTemp ?? config.debounce,
highlightBuilder: highlightBuilder ?? (Offset targetOffset, Size targetSize) {
return highlight ?? Positioned(child: Container());
},
highlightBuilder: highlightBuilder ??
(Offset targetOffset, Size targetSize) {
return highlight ?? Positioned(child: Container());
},
onDismiss: onDismiss,
onMask: null,
displayTime: null,
Expand Down Expand Up @@ -378,7 +382,9 @@ class CompatibleSmartDialog {
return DialogProxy.instance.showLoading(
alignment: Alignment.center,
clickMaskDismiss: clickBgDismissTemp ?? false,
animationType: isLoadingTemp ?? true ? SmartAnimationType.fade : SmartAnimationType.scale,
animationType: isLoadingTemp ?? true
? SmartAnimationType.fade
: SmartAnimationType.scale,
nonAnimationTypes: const [],
animationBuilder: null,
usePenetrate: isPenetrateTemp ?? false,
Expand Down Expand Up @@ -478,14 +484,19 @@ class CompatibleSmartDialog {
return DialogProxy.instance.showToast(
alignment: Alignment.bottomCenter,
clickMaskDismiss: clickBgDismissTemp ?? false,
animationType: isLoadingTemp ?? true ? SmartAnimationType.fade : SmartAnimationType.scale,
animationType: isLoadingTemp ?? true
? SmartAnimationType.fade
: SmartAnimationType.scale,
nonAnimationTypes: const [],
animationBuilder: null,
usePenetrate: isPenetrateTemp ?? true,
useAnimation: isUseAnimationTemp ?? true,
animationTime: animationDurationTemp ?? const Duration(milliseconds: 200),
maskColor: maskColorTemp ?? config.maskColor,
maskWidget: maskWidgetTemp ?? config.maskWidget,
consumeEvent: consumeEvent ?? false,
onMask: null,
onDismiss: null,
displayTime: time ?? const Duration(milliseconds: 2000),
debounce: debounceTemp ?? config.debounce,
displayType: type ?? SmartToastType.normal,
Expand Down
7 changes: 7 additions & 0 deletions lib/src/config/smart_config_toast.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class SmartConfigToast {
this.intervalTime = const Duration(milliseconds: 100),
this.awaitOverType = SmartAwaitOverType.dialogDismiss,
this.maskTriggerType = SmartMaskTriggerType.up,
this.nonAnimationTypes = const [],
this.isExist = false,
});

Expand Down Expand Up @@ -133,6 +134,12 @@ class SmartConfigToast {
/// 点击遮罩时, 被触发时机的类型 (具体请查看[SmartMaskTriggerType]注释)
final SmartMaskTriggerType maskTriggerType;

/// For different scenes, the pop-up animation can be dynamically closed.
/// For details, please refer to [SmartNonAnimationType]
///
/// 对于不同的场景, 可动态关闭弹窗动画, 具体请参照[SmartNonAnimationType]
final List<SmartNonAnimationType> nonAnimationTypes;

/// whether toast(showToast()) exist on the screen
///
/// toast(showToast())是否存在在界面上
Expand Down
16 changes: 13 additions & 3 deletions lib/src/custom/toast/custom_toast.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,16 @@ class CustomToast extends BaseDialog {
required AlignmentGeometry alignment,
required bool clickMaskDismiss,
required SmartAnimationType animationType,
required List<SmartNonAnimationType> nonAnimationTypes,
required AnimationBuilder? animationBuilder,
required bool usePenetrate,
required bool useAnimation,
required Duration animationTime,
required Color maskColor,
required Widget? maskWidget,
required Duration displayTime,
required VoidCallback? onDismiss,
required VoidCallback? onMask,
required bool debounce,
required SmartToastType displayType,
required Widget widget,
Expand All @@ -56,17 +59,24 @@ class CustomToast extends BaseDialog {
maskWidget: maskWidget,
animationTime: animationTime,
animationType: animationType,
nonAnimationTypes: const [],
nonAnimationTypes: nonAnimationTypes,
animationBuilder: animationBuilder,
useAnimation: useAnimation,
usePenetrate: usePenetrate,
onDismiss: null,
onDismiss: onDismiss,
useSystem: false,
reuse: false,
awaitOverType: SmartDialog.config.toast.awaitOverType,
maskTriggerType: SmartDialog.config.toast.maskTriggerType,
ignoreArea: null,
onMask: () => clickMaskDismiss ? ToastTool.instance.dismiss() : null,
onMask: () {
onMask?.call();
if (!clickMaskDismiss ||
DebounceUtils.instance.banContinue(DebounceType.mask, true)) {
return;
}
ToastTool.instance.dismiss();
},
);
}

Expand Down
6 changes: 6 additions & 0 deletions lib/src/helper/dialog_proxy.dart
Original file line number Diff line number Diff line change
Expand Up @@ -302,12 +302,15 @@ class DialogProxy {
required AlignmentGeometry alignment,
required bool clickMaskDismiss,
required SmartAnimationType animationType,
required List<SmartNonAnimationType> nonAnimationTypes,
required AnimationBuilder? animationBuilder,
required bool usePenetrate,
required bool useAnimation,
required Duration animationTime,
required Color maskColor,
required Widget? maskWidget,
required VoidCallback? onDismiss,
required VoidCallback? onMask,
required bool consumeEvent,
required Duration displayTime,
required bool debounce,
Expand All @@ -323,12 +326,15 @@ class DialogProxy {
alignment: alignment,
clickMaskDismiss: clickMaskDismiss,
animationType: animationType,
nonAnimationTypes: nonAnimationTypes,
animationBuilder: animationBuilder,
usePenetrate: usePenetrate,
useAnimation: useAnimation,
animationTime: animationTime,
maskColor: maskColor,
maskWidget: maskWidget,
onDismiss: onDismiss,
onMask: onMask,
displayTime: displayTime,
debounce: debounce,
displayType: displayType,
Expand Down
28 changes: 24 additions & 4 deletions lib/src/smart_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,9 @@ class SmartDialog {
///
/// [animationType]:For details, please refer to the [SmartAnimationType] comment
///
/// [nonAnimationTypes]:For different scenes, the pop-up animation can be dynamically closed.
/// For details, please refer to [SmartNonAnimationType]
///
/// [animationBuilder]:Support highly custom animation, please refer to [AnimationBuilder] description for details
///
/// [usePenetrate]:true(the click event will penetrate mask),
Expand All @@ -766,13 +769,18 @@ class SmartDialog {
///
/// [maskWidget]:highly customizable mask
///
/// [onDismiss]:This callback will be triggered when the dialog is closed
///
/// [onMask]:This callback will be triggered when the mask is clicked
///
/// [consumeEvent]:true (toast will consume touch events),
/// false (toast no longer consumes events, touch events can penetrate toast)
///
/// [debounce]:debounce feature
///
/// [displayType]:provider multiple display logic,
/// please refer to [SmartToastType] comment for detailed description
///
/// [consumeEvent]:true (toast will consume touch events), false (toast no longer consumes events, touch events can penetrate toast)
///
/// [builder]:the custom toast
///
/// -------------------------------------------------------------------------------
Expand All @@ -791,6 +799,8 @@ class SmartDialog {
///
/// [animationType]:具体可参照[SmartAnimationType]注释
///
/// [nonAnimationTypes]:对于不同的场景, 可动态关闭弹窗动画, 具体请参照[SmartNonAnimationType]
///
/// [animationBuilder]:支持高度自定义动画, 具体可参照[AnimationBuilder]说明
///
/// [usePenetrate]:true(点击事件将穿透遮罩),false(不穿透)
Expand All @@ -803,12 +813,16 @@ class SmartDialog {
///
/// [maskWidget]:可高度定制遮罩
///
/// [debounce]:防抖功能
/// [onDismiss]:在dialog被关闭的时候,该回调将会被触发
///
/// [displayType]:提供多种显示逻辑,详细描述请查看 [SmartToastType] 注释
/// [onMask]:点击遮罩时,该回调将会被触发
///
/// [consumeEvent]:true(toast会消耗触摸事件),false(toast不再消耗事件,触摸事件能穿透toast)
///
/// [debounce]:防抖功能
///
/// [displayType]:提供多种显示逻辑,详细描述请查看 [SmartToastType] 注释
///
/// [builder]:自定义toast
static Future<void> showToast(
String msg, {
Expand All @@ -817,12 +831,15 @@ class SmartDialog {
AlignmentGeometry? alignment,
bool? clickMaskDismiss,
SmartAnimationType? animationType,
List<SmartNonAnimationType>? nonAnimationTypes,
AnimationBuilder? animationBuilder,
bool? usePenetrate,
bool? useAnimation,
Duration? animationTime,
Color? maskColor,
Widget? maskWidget,
VoidCallback? onDismiss,
VoidCallback? onMask,
bool? consumeEvent,
bool? debounce,
SmartToastType? displayType,
Expand All @@ -841,12 +858,15 @@ class SmartDialog {
alignment: alignment ?? config.toast.alignment,
clickMaskDismiss: clickMaskDismiss ?? config.toast.clickMaskDismiss,
animationType: animationType ?? config.toast.animationType,
nonAnimationTypes: nonAnimationTypes ?? config.toast.nonAnimationTypes,
animationBuilder: animationBuilder,
usePenetrate: usePenetrate ?? config.toast.usePenetrate,
useAnimation: useAnimation ?? config.toast.useAnimation,
animationTime: animationTime ?? config.toast.animationTime,
maskColor: maskColor ?? config.toast.maskColor,
maskWidget: maskWidget ?? config.toast.maskWidget,
onDismiss: onDismiss,
onMask: onMask,
debounce: debounce ?? config.toast.debounce,
displayType: displayType ?? config.toast.displayType,
consumeEvent: consumeEvent ?? config.toast.consumeEvent,
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description:
An elegant Flutter Dialog solution,
Easily implement Toast, Loading and custom Dialog,
Make the use of the dialog easier!
version: 4.9.1
version: 4.9.1+1
homepage: https://github.com/fluttercandies/flutter_smart_dialog
# flutter pub publish --server=https://pub.dartlang.org

Expand Down

0 comments on commit abfc0a9

Please sign in to comment.