2

我有一个显示动画的 Flutter 应用程序。showModalBottomSheet如果应用程序中的任何位置显示打开的抽屉或模式对话框(如 ),我希望动画暂停。

我可以直接处理特定抽屉的事件并自己管理状态。但是,我的应用程序中有多个抽屉需要跟踪,感觉工作量很大。是否有一个全局位置,我可以检查抽屉(或模式对话框)是否在应用程序的任何位置打开?

4

2 回答 2

2

showModalBottomSheet和模态对话框都在向Navigator. 通过这种方式,可以检查ModalRoute.of(context)?.isCurrent != true另一条路线(或对话框)是否在当前路线的前面。

可悲的是,Drawera的开路Scaffold并不是一条路线。然而,脚手架上不需要有钥匙,但可以检查Scaffold.of(context).isDrawerOpen下一个父级Drawer是否打开。

通过结合这两种状态,我可以检查动画是否应该暂停。

于 2020-05-24T16:45:39.483 回答
0

是的,有办法知道导航抽屉是否打开

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
于 2020-05-22T15:44:18.397 回答