我有一个显示动画的 Flutter 应用程序。showModalBottomSheet
如果应用程序中的任何位置显示打开的抽屉或模式对话框(如 ),我希望动画暂停。
我可以直接处理特定抽屉的事件并自己管理状态。但是,我的应用程序中有多个抽屉需要跟踪,感觉工作量很大。是否有一个全局位置,我可以检查抽屉(或模式对话框)是否在应用程序的任何位置打开?
我有一个显示动画的 Flutter 应用程序。showModalBottomSheet
如果应用程序中的任何位置显示打开的抽屉或模式对话框(如 ),我希望动画暂停。
我可以直接处理特定抽屉的事件并自己管理状态。但是,我的应用程序中有多个抽屉需要跟踪,感觉工作量很大。是否有一个全局位置,我可以检查抽屉(或模式对话框)是否在应用程序的任何位置打开?
showModalBottomSheet
和模态对话框都在向Navigator
. 通过这种方式,可以检查ModalRoute.of(context)?.isCurrent != true
另一条路线(或对话框)是否在当前路线的前面。
可悲的是,Drawer
a的开路Scaffold
并不是一条路线。然而,脚手架上不需要有钥匙,但可以检查Scaffold.of(context).isDrawerOpen
下一个父级Drawer
是否打开。
通过结合这两种状态,我可以检查动画是否应该暂停。
是的,有办法知道导航抽屉是否打开
1. 声明 GlobalKey
GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
2. 为 Scaffold Widget 分配一个键
return Scaffold(
key: _scaffoldKey,
3.在任何你想知道抽屉状态的地方使用
_scaffoldKey.currentState.isDrawerOpen // This return bool value True-Open, False-Close