我使用
showModalBottomSheet
渲染带有按钮的底部工作表 (StatefulWidgetWithButtons
)。一旦按下按钮,工作表的状态就会发生变化,并使用不同的内容重新渲染。
我希望根据某种状态,该工作表变得不可驳回。我可以使用
来实现这一点showModalBottomSheet(
isDismissable: false
builder: (context) => StatefulWidgetWithButtons()
)
但是我想要实现的是,根据
StatefulWidgetWithButtons
内按下的某个按钮,isDismissable
属性更改为true
(或false
)。
我不知道如何实现这一点,因为我知道我可以更改
StatefulWidgetWithButtons
但这不会重建底部工作表。
我也不想关闭并再次显示底部工作表,但在渲染时更改其可关闭行为
我能够通过将底部工作表的不可关闭布局变体包装在具有垂直拖动处理程序的 GestureDetector 中来获得此行为,如下所示:
GestureDetector(
onVerticalDragUpdate: (_) {},
child: ...
这会阻止默认模式底部表单拖动处理程序采取操作
如果您想了解有关此解决方案及其工作原理的更多信息,您可以在这里阅读:https://stackoverflow.com/a/71622120/11676468
它看起来确实更像是一种解决方法/黑客,但看起来唯一的选择是从头开始实现完全自定义的 showModalBottomSheet
也使用
enableDrag
:
showModalBottomSheet(
isDismissible: false,
enableDrag: false,
etc.
)