【发布时间】:2020-03-14 02:39:08
【问题描述】:
我正在尝试从位于应用主页上的 PopupMenuButton 列表中的“退出”按钮导航回登录页面。我尝试配置的 SignOut 按钮如下所示:
简化后的代码如下所示:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home Page'),
actions: <Widget>[
PopupMenuButton<String>(
onSelected: choiceAction,
itemBuilder: (BuildContext context) {
return MenuOptions.choices.map((String choice){
return PopupMenuItem<String>(
value: choice,
child: Text(choice),
);
}).toList();
和onSelected 调用以下choiceAction:
void choiceAction(String choice) {
setState() {
if (choice == MenuOptions.SignOut) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginPage()),
);
}
}
}
我面临的问题是它说 Navigator.push 中的context 未定义。我不确定我是否使用Widget build(BuildContext context) 或itemBuilder: (BuildContext context) 中定义的上下文,并且我不知道如何修复未定义的错误以使其使用在onSelected 中调用它的定义。
【问题讨论】:
-
可以传递上下文:
onSelected: () => choiceAction(context).