【问题标题】:How to get the onDismiss callback of showModalBottomSheet in flutter?如何在flutter中获取showModalBottomSheet的onDismiss回调?
【发布时间】:2020-03-22 23:53:30
【问题描述】:
我有一个 showModalBottomSheet,并且 isDismissible 设置为 true,当我在 showModalBottomSheet 外部单击时,我想接收它的回调。
在 showModalBottomSheet 中我有隐藏按钮,点击隐藏按钮我正在做Navigator.pop(context) 隐藏对话框,
尝试了whenComplete() 和then(),但即使点击隐藏按钮,我也会在每次关闭时收到回调。
我该怎么做?
【问题讨论】:
标签:
flutter
dart
flutter-layout
【解决方案1】:
乌代,
你可以在弹出路由时传递参数来查看模态表是如何关闭的:
showModalBottomSheet<bool>(
context: context,
isDismissible: true,
builder: (BuildContext context) {
return Center(
child: RaisedButton(
child: const Text("hide"),
onPressed: () => Navigator.of(context).pop(true), // pass true indicating that it was hidden via button
),
);
},
).then(
(isManuallyHidden) {
if (isManuallyHidden ?? false) {
print("hidden via button");
} else {
print("dismissed");
}
},
);