showQueueToast static method

void showQueueToast(
  1. String msg, {
  2. bool status = true,
  3. BuildContext? context,
  4. BuildToastQueueStyle? buildStyle,
  5. Duration showTime = const Duration(milliseconds: 2000),
  6. Duration animationTime = const Duration(milliseconds: 600),
  7. Offset startOffset = const Offset(0, 0),
  8. Offset endOffset = const Offset(0, -100),
  9. ScalingFactor mobile = const ScalingFactor(0.7, 0.7),
  10. ScalingFactor tablet = const ScalingFactor(0.5, 0.7),
  11. ScalingFactor desktop = const ScalingFactor(0.3, 0.7),
  12. SizedBox divider = const SizedBox(height: 10),
})

支持队列的方式显示多个 toast 默认自下向上退出 显示的宽高受最大 ScalingFactor 缩放因子决定

Implementation

static void showQueueToast(
  String msg, {
  bool status = true,
  BuildContext? context,
  BuildToastQueueStyle? buildStyle,
  Duration showTime = const Duration(milliseconds: 2000),
  Duration animationTime = const Duration(milliseconds: 600),
  Offset startOffset = const Offset(0, 0),
  Offset endOffset = const Offset(0, -100),
  ScalingFactor mobile = const ScalingFactor(0.7, 0.7),
  ScalingFactor tablet = const ScalingFactor(0.5, 0.7),
  ScalingFactor desktop = const ScalingFactor(0.3, 0.7),
  SizedBox divider = const SizedBox(height: 10),
}) {

  final toastStyle = buildStyle ?? _instance.globalBuildToastQueueStyle;
  ToastTaskQueue(
      msg: msg,
      status: status,
      queue: _queueTask,
      showTime: showTime,
      animationTime: animationTime,
      startOffset: startOffset,
      endOffset: endOffset,
      valueListenable: _valueListenable,
      );
  if (_queueTaskOverlay == null) {
    _queueTaskOverlay = OverlayEntry(builder: (BuildContext context) {
      return ValueListenableBuilder<num>(
          valueListenable: _valueListenable,
          builder: (context, value, child) {
            final tasks = ListView.separated(
                itemCount: _queueTask.length,
                physics: const PageScrollPhysics(),
                separatorBuilder: (BuildContext context, int index)=>divider,
                itemBuilder: (context, index) {
                  final task = _queueTask.elementAt(index);
                  return ToastTaskView(
                    key: ValueKey(task),
                    task:task,
                    style:toastStyle!,
                    callBack:() {
                      _queueTaskOverlay?.remove();
                      _queueTaskOverlay = null;
                    },
                  );
                });
            final size = MediaQuery.of(context).size;
            return Center(
              child: Responsive(
                  mobile: SizedBox(
                    width: size.width * mobile.horizontal,
                    height: size.height*mobile.vertical,
                    child: tasks,
                  ),
                  tablet: SizedBox(
                    width: size.width * tablet.horizontal,
                    height: size.height*tablet.vertical,
                    child: tasks,
                  ),
                  desktop: SizedBox(
                    width: size.width * desktop.horizontal,
                    height: size.height*desktop.vertical,
                    child: tasks,
                  )),
            );
          });
    });
    if (context == null) {
      navigatorState.currentState?.overlay?.insert(_queueTaskOverlay!);
      return;
    }
    var overlayState = Overlay.of(context);
    overlayState.insert(_queueTaskOverlay!);
  }
}