Will Pop Scope 无法与 Overlay Widget 一起使用

问题描述 投票:0回答:1

我准备了一个自定义覆盖小部件,我的目标是在应用程序中的任何位置使用它,因此我制作了一个全局覆盖输入,它将在创建覆盖时获取其值,然后我创建了一个函数来删除我认为的覆盖调用 Onwill pop ,但问题是,不会为此覆盖小部件调用 will pop 范围,或者如果我在其中使用任何带覆盖的小部件。

bool isOverlayOnScreen = false;
late OverlayEntry? globaOverlayEntry;

showOverlayWidget({required BuildContext context,required Widget widgetToDisplay})async{
  OverlayState? overlayState = Overlay.of(context);

  globaOverlayEntry = OverlayEntry(
      maintainState: true,
      builder: (context){
    return WillPopScope(child: widgetToDisplay, onWillPop: ()async{
      print("Print Will of Stack widget called----2");
      return true;});
  });
  isOverlayOnScreen = true;

  overlayState.insert(globaOverlayEntry!);
}

void removeGlobalOverlay() {
  globaOverlayEntry!.remove();
  globaOverlayEntry!.dispose();
  isOverlayOnScreen = false;
  globaOverlayEntry = null;
}

void showWidgetScreen(BuildContext context,Widget widgetToDisplay) {
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return widgetToDisplay;
    },
  );
}

谁能给我原因和解决方案。

flutter overlay
1个回答
0
投票

WillPopScope 不适用于 showDialog,但您可以使用函数的返回值,如下所示:

showDialog(
       ...
       
      ).then((value) {
       /// Your logic here
}); 
© www.soinside.com 2019 - 2024. All rights reserved.