我想在应用程序运行时不按任何按钮打开抽屉。
我用了 _scafoldKey.currentState.openEndDrawer()
在initState里面,它显示null错误
你将不得不利用 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
.