flutter - Flutter 如何在 PopupMenuButton 小部件中获取上下文?
问题描述
我有一个 PopupMenuButton。但是如果我想调用一个会跳转到另一个页面的方法
Navigator.push(context,MaterialPageRoute(builder: (context) => SingleOrder()),);
我有一个错误。未定义的名称context
。我怎样才能得到上下文Navigator.push
?
Widget _childPopup() => PopupMenuButton<int>(
onSelected: (result) {
if (result == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SingleOrder()),
);
}
},
itemBuilder: (context) => [
PopupMenuItem(
value: 0,
child: Text(
"MENU 1",
style: TextStyle(
color: Colors.black54),
),
),
PopupMenuItem(
value: 1,
child: Text(
"MENU 2",
style: TextStyle(
color: Colors.black54),
),
),
],
);
解决方案
您需要传递BuildContext
给您的_childPopup
函数。BuildContext
您可能在不直接可用的地方定义了这个函数。前任。
Widget _childPopup(BuildContext context) => PopupMenuButton<int>(
onSelected: (result) {
if (result == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SingleOrder()),
);
}
},
itemBuilder: (context) => [
PopupMenuItem(
value: 0,
child: Text(
"MENU 1",
style: TextStyle(
color: Colors.black54),
),
),
PopupMenuItem(
value: 1,
child: Text(
"MENU 2",
style: TextStyle(
color: Colors.black54),
),
),
],
);
这样做可确保BuildContext
该函数可用,并允许您更好地控制它将使用哪个上下文。
推荐阅读
- php - 在预生产中使用数据库测试应用程序
- elasticsearch - 如何在 Fluent Bit 中处理间歇性断开连接并通过 HTTP 发送正确的时间戳?
- android - 反序列化 JSON Android Xamarin
- php - 使用 php 从表 mysql 查询中针对 id 选择第一行
- python - 在 ssh 终端关闭后使 python3 venv 永久化
- react-native - 如何解码来自葡萄糖测量特性(蓝牙)的响应
- raspberry-pi - 是否有 arm64 版本
- android - 我必须为 Android Studio 中的数据绑定设置生命周期所有者吗?
- php - Auth::Attempt(username,password) 不起作用
- python - Python - 解析 SQL 并打印语句