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