【发布时间】:2022-07-13 00:31:29
【问题描述】:
我正在使用模态表,当我点击模态底部表之外的某个位置(在透明区域中)时,它会关闭底部表,所以我需要回调这个点击手势,以便我可以在关闭之前执行某些操作底页。
showModalBottomSheet 中有属性isDismissible,它禁用了对稀松布的点击,但我不希望它禁用它,只需要一个回调以便在关闭之前可以执行某些操作。
【问题讨论】:
标签: flutter flutter-showmodalbottomsheet
我正在使用模态表,当我点击模态底部表之外的某个位置(在透明区域中)时,它会关闭底部表,所以我需要回调这个点击手势,以便我可以在关闭之前执行某些操作底页。
showModalBottomSheet 中有属性isDismissible,它禁用了对稀松布的点击,但我不希望它禁用它,只需要一个回调以便在关闭之前可以执行某些操作。
【问题讨论】:
标签: flutter flutter-showmodalbottomsheet
不确定这是否正是您要查找的内容,但您可以在 showModalBottomSheet 构建器中返回 StatefulWidget,并在该小部件中触发带有 deactivate 或 dispose 覆盖的回调。首先触发停用。
要触发回调,您需要将该函数传递给StatefulWidget 的构造函数。
例如
void callback() {
debugPrint('>>> my callback triggered');
}
void showMyModalBottomSheet() {
showModalBottomSheet(
context: context,
builder: (context) {
return MyBottomSheetWidget(
callback: callback,
);
},
);
}
class MyBottomSheetWidget extends StatefulWidget {
final VoidCallback callback;
const MyBottomSheetWidget({
Key key,
this.callback,
}) : super(key: key);
@override
State<MyBottomSheetWidget> createState() => _MyBottomSheetWidgetState();
}
class _MyBottomSheetWidgetState extends State<MyBottomSheetWidget> {
@override
void deactivate() {
debugPrint('>>> bottom sheet closing');
widget.callback(); // This will be trigger when the bottom sheet finishes closing
super.deactivate();
}
@override
Widget build(BuildContext context) {
return Container();
}
}
【讨论】: