Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在showModalBottomSheet外部单击时,如何控制传递给Navigator.pop()的内容?_Flutter_Dart_Modal Dialog_Future_Navigator - Fatal编程技术网

Flutter 在showModalBottomSheet外部单击时,如何控制传递给Navigator.pop()的内容?

Flutter 在showModalBottomSheet外部单击时,如何控制传递给Navigator.pop()的内容?,flutter,dart,modal-dialog,future,navigator,Flutter,Dart,Modal Dialog,Future,Navigator,我启动一个模式底部工作表,然后使用返回的数据作为它的未来 var modalFuture = showModalBottomSheet( // ... ); modalFuture.then((data) { // Use data }); 我使用以下命令从模式小部件返回数据: Navigator.pop(context, data); 在完成与

我启动一个模式底部工作表,然后使用返回的数据作为它的未来

var modalFuture = showModalBottomSheet(
                // ...
              );
              modalFuture.then((data) {
                // Use data
              });
我使用以下命令从模式小部件返回数据:

Navigator.pop(context, data);
在完成与我设置的小部件的模式交互时,这是很好的。
我在模式外单击时遇到问题。在模式外部单击会导致模式自动关闭(使用
Navigator.pop(上下文)
call?)。我对这个结束式交互没有意见,但我想用它发送数据(通过
Navigator.pop(context,data)
调用)。在showModalBottomSheet模式外单击时,是否仍有覆盖隐式pop的方法?

您可以使用WillPopScope包装您的ModalWidget。您可以看到下面的示例

 WillPopScope(
  onWillPop: () async {
    Navigator.pop(context, data);
    return true; // return true if needs to be popped
  },
  child: ModelWidget(
    …
  ),
);

这将确保在使用“后退”按钮自动弹出时调用Navigator.pop

正是我想要的。非常感谢你。