Flutter 在初始值设定项中只能访问静态成员

Flutter 在初始值设定项中只能访问静态成员,flutter,dart,Flutter,Dart,我不能在Scaffold中使用GlobalKey。错误是 在初始值设定项中只能访问静态成员 //全局密钥 最终全局键_mainKey=GlobalKey(); //TabBar列表 最终列表选项卡栏=[ 纵队( 儿童:[ 图标(图标、账户、余额、钱包), 文本(“颤振”), 文本(“省道”) ], ), 扁平按钮( 子项:文本(“打开的抽屉”), 已按下:(){ //(_主键)具有红色下划线颜色 _mainKey.currentState.openDrawer(); }, ) ]; /* 编译器

我不能在
Scaffold
中使用
GlobalKey
。错误是

在初始值设定项中只能访问静态成员

//全局密钥
最终全局键_mainKey=GlobalKey();
//TabBar列表
最终列表选项卡栏=[
纵队(
儿童:[
图标(图标、账户、余额、钱包),
文本(“颤振”),
文本(“省道”)
],
),
扁平按钮(
子项:文本(“打开的抽屉”),
已按下:(){
//(_主键)具有红色下划线颜色
_mainKey.currentState.openDrawer();
},
)
];
/*
编译器消息:
lib/Trial.dart:32:9:错误:无法访问字段初始值设定项中的“this”以读取“\u mainKey”。
_mainKey.currentState.openDrawer()*/

简短回答

替换

final _mainKey = ...; 


长答案:

我建议您将
选项卡栏
从变量更改为方法,这样您就不需要将变量
设置为静态
。比如:

List<Widget> getTabBar() {
  return [
    Column(
      children: <Widget>[Icon(Icons.account_balance_wallet), Text('flutter'), Text('dart')],
    ),
    FlatButton(
      child: Text('Open Drawer'),
      onPressed: () {
        _mainKey.currentState.openDrawer();
      },
    )
  ];
}
List gettabar(){
返回[
纵队(
子项:[图标(Icons.account\u balance\u wallet)、文本('flatter')、文本('dart')],
),
扁平按钮(
子项:文本(“打开的抽屉”),
已按下:(){
_mainKey.currentState.openDrawer();
},
)
];
}

您能告诉我原因吗?因为您不能在初始值设定项列表中使用非静态成员,所以我更新了问题以提供更好的解决方案。非常感谢,我理解了简短和冗长的答案,感谢发生了什么事您之前接受了答案,而您只是撤销了答案?我可以知道在这个解决方案中什么不起作用吗是的,我不知道为什么!我又做了一次
static _mainKey = ...;
List<Widget> getTabBar() {
  return [
    Column(
      children: <Widget>[Icon(Icons.account_balance_wallet), Text('flutter'), Text('dart')],
    ),
    FlatButton(
      child: Text('Open Drawer'),
      onPressed: () {
        _mainKey.currentState.openDrawer();
      },
    )
  ];
}