flutter 中使用 Get.back 关闭showDialog 怎么能不触发Getx 中的 onClose() 方法
时间: 2024-03-02 10:49:02 浏览: 410
flutter中使用基于flutter-sound的flutter-sound-record录音
在 GetX 中,当某个控制器被销毁时,会自动触发 `onClose()` 方法。如果你不想在关闭 `showDialog` 时触发 `onClose()` 方法,可以使用 `Get.until()` 方法来强制性地销毁控制器,而不是使用 `Get.back()` 方法。
例如,假设你在当前页面使用 `showDialog` 方法打开了一个对话框,并且该对话框中使用了一个控制器 `MyController`,你可以通过以下代码来强制性地销毁控制器:
```
final MyController myController = Get.find<MyController>();
Get.until((route) => route.isFirst);
```
这将强制性地销毁控制器 `MyController`,并且不会触发 `onClose()` 方法。注意,这将会关闭当前页面上的所有路由,直到返回到根路由为止。如果你只想关闭当前页面上的所有对话框,则可以使用 `Get.until()` 方法的第二个参数来指定要返回的路由。
```
final MyController myController = Get.find<MyController>();
Get.until((route) => route.settings.name == '/my-page');
```
这将强制性地销毁控制器 `MyController`,并且只会关闭当前页面上的对话框,不会关闭其他页面。
阅读全文