移除导航器推送上的覆盖

时间:2019-03-31 04:33:42

标签: flutter

我有一个重叠图像,需要在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(),但是覆盖小部件始终停留在所有页面上。

1 个答案:

答案 0 :(得分:0)

原来我是在代码中第二次调用showOverlay方法,这导致了此问题。