![](/img/trans.png)
[英]How to change the textTheme of flutter app outside MateriapApp Buildcontext
[英]How to use routes in Flutter outside BuildContext?
我正在尝试在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();
},
)
您可以将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),
);
}
如果您使用的是PopupMenuButton(小部件),则BuildContext始终可见。
如何使用PopupMenuButton不同于这样的事情。
PopupMenuButton#onSelected中指定的类型为void Function(T value)
。
PopupMenuButton<String>(
onSelected: (str) {
choiceAction("Tutorial", context);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.