show static method

Future<OverlayEntryManger?> show(
  1. String msg, {
  2. BuildContext? context,
  3. BuildToastStyle? buildToastStyle,
  4. ToastPosition? position,
  5. int? showTime,
  6. BuildOverlayStyle? buildOverlayStyle,
  7. Color? backgroundColor = Colors.transparent,
})

显示一个吐司

Implementation

static Future<OverlayEntryManger?> show(
  String msg, {
  BuildContext? context,
  BuildToastStyle? buildToastStyle,
  ToastPosition? position,
  int? showTime,
  BuildOverlayStyle? buildOverlayStyle,
  Color? backgroundColor = Colors.transparent,
}) async {
  ///防止多次弹出,外部设置间隔时间 默认2秒
  if (_instance._startedTime != null &&
      DateTime.now().difference(_instance._startedTime!).inMilliseconds <
          _instance.intervalTime) {
    return null;
  }

  buildToastStyle = buildToastStyle ?? _instance.globalBuildToastStyle;
  _instance._startedTime = DateTime.now();
  final _overlayEntry = buildOverlayStyle?.call()?? OverlayEntry(
      builder: (BuildContext context){
        Size size = MediaQuery.of(context).size;
        return SizedBox(
          width:size.width,
          height: size.height,
          child: Stack(
            children: [
              Positioned(
                top: _calToastPosition(
                    context, position ?? _instance.globalPosition),
                child:Material(
                  color: backgroundColor,
                  child: Center(
                    child:  Container(
                        alignment: Alignment.center,
                        width: MediaQuery.of(context).size.width,
                        child: buildToastStyle?.call(context, msg)),
                  ),
                ),
              )
            ],
          ),
        );
      });

  ///获取OverlayState
  if (context == null) {
    ///创建和显示顶层OverlayEntry
    navigatorState.currentState?.overlay?.insert(_overlayEntry);
  } else {
    var overlayState = Overlay.of(context);
    overlayState.insert(_overlayEntry);
  }
  var manger = OverlayEntryManger(_overlayEntry);
  _overlayEntryMangers.add(manger);
  manger
      .start(showTime ?? _instance.showTime, _instance._startedTime!)
      .then((value) {
    _overlayEntryMangers.remove(value);
  });
  return manger;
}