我正在尝试制作一个叠加层,就像这里显示的一样:
https://www.didierboelens.com/2018/06/how-to-create-a-toast-or-notifications-notion-of-overlay/
使用 OverlayEntry
。
import 'package:flutter/material.dart';
import 'dart:async';
class ShowNotificationIcon {
void show(BuildContext context) async {
OverlayState overlayState = Overlay.of(context);
OverlayEntry overlayEntry = new OverlayEntry(builder: _build);
overlayState.insert(overlayEntry);
}
Widget _build(BuildContext context){
return new Positioned(
top: 50.0,
left: 50.0,
child: new Material(
color: Colors.transparent,
child: new Icon(Icons.warning, color: Colors.purple),
),
);
}
}
调用方法:
ShowNotificationIcon _icon = new ShowNotificationIcon();
_icon.show(context);
然而,当我尝试导航到其他屏幕时,叠加层仍然停留在屏幕上。 如何使叠加层只在被调用的屏幕上显示,而不是在其他屏幕上显示? 以防万一,这是我在我的有状态小部件中尝试过的内容:
ShowNotificationIcon _icon = new ShowNotificationIcon();
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
_icon.show(context);
});
super.initState();
}
@override
void dispose() {
_icon.remove();
super.dispose();
}
overlay_container
,谢谢你的建议。 - Giraldi