show static method
Future<OverlayEntryManger?>
show(
- String msg, {
- BuildContext? context,
- BuildToastStyle? buildToastStyle,
- ToastPosition? position,
- int? showTime,
- BuildOverlayStyle? buildOverlayStyle,
- 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;
}