在 showModalBottomSheet 外部单击时如何控制传递给 Navigator.pop() 的内容?
How can I control what is passed to Navigator.pop() when clicking outside of a showModalBottomSheet?
我启动了一个模态底部 sheet,然后使用 returned 的数据作为它的未来。
var modalFuture = showModalBottomSheet(
// ...
);
modalFuture.then((data) {
// Use data
});
我 return 从模态小部件向它发送数据:
Navigator.pop(context, data);
这在完成与我设置的小部件的模式交互时效果很好。
单击模式外部时遇到问题。在模态框外单击会导致模态框自动关闭(使用 Navigator.pop(context)
调用?)。我对这种结束互动没意见,但我想用它发回数据(通过 Navigator.pop(context, data)
调用)。在 showModalBottomSheet 模态之外单击时,是否可以覆盖隐式弹出?
您可以使用 WillPopScope 包装您的 ModalWidget。你可以看下面的例子
WillPopScope(
onWillPop: () async {
Navigator.pop(context, data);
return true; // return true if needs to be popped
},
child: ModelWidget(
…
),
);
这将确保在使用后退按钮自动弹出时调用 Navigator.pop。
我启动了一个模态底部 sheet,然后使用 returned 的数据作为它的未来。
var modalFuture = showModalBottomSheet(
// ...
);
modalFuture.then((data) {
// Use data
});
我 return 从模态小部件向它发送数据:
Navigator.pop(context, data);
这在完成与我设置的小部件的模式交互时效果很好。
单击模式外部时遇到问题。在模态框外单击会导致模态框自动关闭(使用 Navigator.pop(context)
调用?)。我对这种结束互动没意见,但我想用它发回数据(通过 Navigator.pop(context, data)
调用)。在 showModalBottomSheet 模态之外单击时,是否可以覆盖隐式弹出?
您可以使用 WillPopScope 包装您的 ModalWidget。你可以看下面的例子
WillPopScope(
onWillPop: () async {
Navigator.pop(context, data);
return true; // return true if needs to be popped
},
child: ModelWidget(
…
),
);
这将确保在使用后退按钮自动弹出时调用 Navigator.pop。