翩翩:如何在应用程序运行时不按任何按钮打开endDrawer?

问题描述 投票:0回答:1

我想在应用程序运行时不按任何按钮打开抽屉。

我用了 _scafoldKey.currentState.openEndDrawer() 在initState里面,它显示null错误

flutter flutter-layout
1个回答
1
投票

你将不得不利用 PostFrameCallback 首先,在您的widget内部定义一个全局键,但在构建方法之外。

final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

这个键将被用来识别脚手架状态并与之交互。在构建方法中,将这个键添加到您的脚手架小组件中。

return Scaffold(
    drawer: Drawer(),
    key: _scaffoldKey     
)

现在,在您的 initState 方法中,添加一个 PostFrameCallback 来安排在widget树完成渲染后立即打开侧抽屉。

@override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _scaffoldKey.currentState.openEndDrawer();
    });
  }

我们在这里做的是,我们添加了一个回调,以便在构建方法执行后被调用。我们不能简单地调用 _scaffoldKey.currentState.openDrawer() 方法,因为全局键还没有被添加到小组件树中,这就是为什么你得到的是 called on null error.

© www.soinside.com 2019 - 2024. All rights reserved.