showCustomNotification static method

CancelFunc showCustomNotification({
  1. required ToastBuilder toastBuilder,
  2. WrapAnimation? wrapAnimation = nilWrapAnimation,
  3. WrapAnimation? wrapToastAnimation = nilWrapAnimation,
  4. Alignment? align = nilAlignment,
  5. List<DismissDirection> dismissDirections = nilDismissDirectionList,
  6. Duration? duration = nilDuration,
  7. Duration? animationDuration = nilDuration,
  8. Duration? animationReverseDuration = nilDuration,
  9. VoidCallback? onClose = nilVoidCallback,
  10. BackButtonBehavior? backButtonBehavior = nilBackButtonBehavior,
  11. Object enableKeyboardSafeArea = nil,
  12. Object enableSlideOff = nil,
  13. Object crossPage = nil,
  14. Object onlyOne = nil,
  15. Object useSafeArea = nil,
})

Display a custom notification Toast. toastBuilder - Builder function to generate the Widget to be displayed. enableSlideOff - Whether sliding to dismiss is enabled. align - Alignment of the ToastContent area within the MainContent area. dismissDirections - Directions in which sliding to dismiss is allowed. wrapAnimation - See showAnimationWidget.wrapAnimation, default value is null. wrapToastAnimation - See showAnimationWidget.wrapToastAnimation, default value is notificationAnimation. animationDuration - See showAnimationWidget.animationDuration. animationReverseDuration - See showAnimationWidget.animationReverseDuration. duration - See showEnhancedWidget.duration. onlyOne - See showEnhancedWidget.onlyOne. crossPage - See showEnhancedWidget.crossPage. onClose - See showEnhancedWidget.onClose. backButtonBehavior - See showEnhancedWidget.backButtonBehavior. enableKeyboardSafeArea - See showEnhancedWidget.enableKeyboardSafeArea.

显示一个自定义的通知Toast toastBuilder 生成需要显示的Widget的builder函数 enableSlideOff 是否能滑动删除 align ToastContent区域在MainContent区域的对齐 dismissDirections 能进行滑动关闭的方向 wrapAnimation 请看showAnimationWidget.wrapAnimation,默认值为null wrapToastAnimation 请看showAnimationWidget.wrapToastAnimation,默认值为notificationAnimation animationDuration 请看showAnimationWidget.animationDuration animationReverseDuration 请看showAnimationWidget.animationReverseDuration duration 请看showEnhancedWidget.duration onlyOne 请看showEnhancedWidget.onlyOne crossPage 请看showEnhancedWidget.crossPage onClose 请看showEnhancedWidget.onClose backButtonBehavior 请看showEnhancedWidget.backButtonBehavior enableKeyboardSafeArea 请看showEnhancedWidget.enableKeyboardSafeArea

Implementation

static CancelFunc showCustomNotification(
    {required ToastBuilder toastBuilder,
    WrapAnimation? wrapAnimation = nilWrapAnimation,
    WrapAnimation? wrapToastAnimation = nilWrapAnimation,
    Alignment? align = nilAlignment,
    List<DismissDirection> dismissDirections = nilDismissDirectionList,
    Duration? duration = nilDuration,
    Duration? animationDuration = nilDuration,
    Duration? animationReverseDuration = nilDuration,
    VoidCallback? onClose = nilVoidCallback,
    BackButtonBehavior? backButtonBehavior = nilBackButtonBehavior,
    /*bool*/ Object enableKeyboardSafeArea = nil,
    /*bool*/ Object enableSlideOff = nil,
    /*bool*/ Object crossPage = nil,
    /*bool*/ Object onlyOne = nil,
    /*bool*/ Object useSafeArea = nil}) {
  var o = defaultOption.customNotification;

  wrapAnimation = returnFirstIfNotNil(wrapAnimation, o.wrapAnimation);
  wrapToastAnimation = returnFirstIfNotNil(wrapToastAnimation, o.wrapToastAnimation);
  align = returnFirstIfNotNil(align, o.align);
  dismissDirections = returnFirstIfNotNil(dismissDirections, o.dismissDirections);
  duration = returnFirstIfNotNil(duration, o.duration);
  animationReverseDuration = returnFirstIfNotNil(animationReverseDuration, o.animationReverseDuration);
  onClose = returnFirstIfNotNil(onClose, o.onClose);
  backButtonBehavior = returnFirstIfNotNil(backButtonBehavior, o.backButtonBehavior);
  enableKeyboardSafeArea = returnFirstIfNotNil(enableKeyboardSafeArea, o.enableKeyboardSafeArea);
  crossPage = returnFirstIfNotNil(crossPage, o.crossPage);
  onlyOne = returnFirstIfNotNil(onlyOne, o.onlyOne);
  useSafeArea = returnFirstIfNotNil(useSafeArea, o.useSafeArea);
  enableSlideOff = returnFirstIfNotNil(enableSlideOff, o.enableSlideOff);

  final animationDurationV = returnFirstIfNotNilAndCast<Duration?>(animationDuration, o.animationDuration);

  assert(isNilOr<bool>([enableKeyboardSafeArea, enableSlideOff, crossPage, onlyOne, useSafeArea]), 'Must be of bool type');

  return showAnimationWidget(
      crossPage: crossPage,
      allowClick: true,
      clickClose: false,
      ignoreContentClick: false,
      enableKeyboardSafeArea: enableKeyboardSafeArea,
      onlyOne: onlyOne,
      onClose: onClose,
      duration: duration,
      backButtonBehavior: backButtonBehavior,
      animationDuration: animationDurationV ?? o.animationDuration,
      animationReverseDuration: animationReverseDuration,
      wrapAnimation: wrapAnimation,
      wrapToastAnimation: (controller, cancel, child) {
        if (wrapToastAnimation != null) {
          child = wrapToastAnimation(controller, cancel, child);
        }
        if (align != null) {
          child = Align(alignment: align, child: child);
        }
        return useSafeArea == true ? SafeArea(child: child) : child;
      },
      toastBuilder: (cancelFunc) => NotificationToast(
          child: toastBuilder(cancelFunc), dismissDirections: dismissDirections, slideOffFunc: enableSlideOff == true ? cancelFunc : null),
      groupKey: notificationKey);
}