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 正是我想要的。非常感谢你。