我正在尝试在Flutter中使用路线。按下选项卡时,我想导航到该页面。我已经包含了我尝试过的代码。
但是,这没有用,因为上下文未定义。
是否可以使用路由来完成此功能?
void choiceAction(String choice) {
if (choice == Tabs.Settings) {
print('Settings');
}
else if (choice == Tabs.Tutorial) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OnBoarding()),
);
}
}
更新: 我从PopupMenuButton调用choiceAction。
PopupMenuButton<String>(
icon: Icon(
Icons.settings,
color: Colors.white,
size: 30.0,
),
onSelected: choiceAction("Tutorial", context),
itemBuilder: (BuildContext context) {
return Tabs.choices.map((String choice) {
return PopupMenuItem<String>(
value: choice,
child: Text(choice),
);
}).toList();
},
)
答案 0 :(得分:0)
您可以将BuildContext
添加到choiceAction
方法的变量中,并在每次调用此方法时传递当前上下文。
void choiceAction(String choice, BuildContext context) {
if (choice == Tabs.Settings) {
print('Settings');
}
else if (choice == Tabs.Tutorial) {
Navigator.push(context, MaterialPageRoute(builder: (context) => OnBoarding()));
}
}
从某个地方调用choiceAction
方法
@override
Widget build(BuildContext context) {
return RaisedButton(
"Go to next page",
onPressed: choiceAction("choice 1", context),
);
}
答案 1 :(得分:0)
如果您使用PopupMenuButton(小部件),则BuildContext始终可见。
如何使用PopupMenuButton不同于这种方法。
在PopupMenuButton#onSelected中指定的类型为 //my own
public interface ITest{}
public class B : ITest
{
public B()
{
}
}
public class MyClass<T> : B where T : ITest, new()
{
}
。
void Function(T value)