我有一个重叠图像,需要在GestureDetector龙头上删除,我叫overlayEntry.remove()
,但在方法之外无法使用。
class _Home extends State<Home> with TickerProviderStateMixin {
// setting global
OverlayEntry overlayEntry;
OverlayState overlayState;
......
// calling method to show my overlay image when state init
initState() {
showOverlay(context);
......
// method to show my overlay
showOverlay(BuildContext context) async {
await Future.delayed(Duration(seconds: 3));
this.overlayState = Overlay.of(context);
this.overlayEntry = OverlayEntry(
maintainState: true,
builder: (context) => Positioned(
top: MediaQuery.of(context).size.height * 0.50,
left: 20.0,
child: Image.asset(
"assets/imgs/myimage.png",
width: 120.0,
),
));
this.overlayState.insert(this.overlayEntry);
}
......
// somewhere else in the code on some element
GestureDetector(
onTap: () {
this.overlayEntry.remove(); // This doesn't works
Navigator.push(context,MyCustomRoute(builder: (context) => Page()),
);
},
就像您在我的GestureDetector
方法中看到的那样,我正在调用overlayEntry.remove()
,但是覆盖小部件始终停留在所有页面上。
答案 0 :(得分:0)
原来我是在代码中第二次调用showOverlay
方法,这导致了此问题。