为什么我的 Navigator.push 在抽屉里没有上下文?

Why has my Navigator.push, in drawer no context?

我定义了一个抽屉并且一切正常。不知何故它崩溃了,现在我可以看到我的抽屉小部件但是当我想添加一个导航器推送时它说: 未定义的名称上下文。即使我添加

BuildContext context;

按钮在点击时不执行任何操作。

我的抽屉是这样实现的:

return Scaffold(
  appBar: _appBar(),
  drawer: _drawer(),
}    

Widget _drawer() {return Drawer(
  child: ListView(
      children: <Widget>[
        Padding(padding: EdgeInsets.only(top: 5.0, left: 10.0, right: 5.0, bottom: 5.0,),
          child: Text(
              "Life",
              overflow: TextOverflow.ellipsis,
              style: TextStyle(fontSize: 35.0, fontWeight: FontWeight.bold,)),
        ),

        new ListTile(
            leading: Icon(Icons.add_shopping_cart),
            title: new Text("Shops"),
            onTap: () {
              BuildContext context;
              Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => B()));
            }
        ),

由于您使用的是 StatelessWidget,其中 context 在整个 class 中不可用,因此您需要在方法之间传递 context

所以更好的解决方案是将其转换为 StatefulWidget class 然后你可以在任何你想要的地方使用 context

查看如何将其转换为 StatefulWidget 的屏幕截图。只需使用 alt/option + return/enter.