flutter - 在没有上下文的颤振小部件上无法在 onPressed 上使用 Navigator.push 功能
问题描述
如果进入一个小部件,我尝试使用 onPressed 函数 Navigator.push 它返回错误这是代码
Widget get _navigationDrawer {
return Container(
height: 60.0,
child: BottomAppBar(
color: Color(0xFF1f2032),
elevation: 35,
shape: CircularNotchedRectangle(),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 35),
child: IconButton(
icon: Icon(Icons.settings,color: Colors.white,),
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
},
),
),
],
)),
);
}
如您所见, IconButton 具有 onPressed 功能,但如果我添加:
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
我收到此错误:编译器消息:lib/pages/profilepage.dart:62:36:错误:没有为类“UserProfile”定义吸气剂“上下文”。
- 'UserProfile' 来自'package:speedoo/pages/profilepage.dart' ('lib/pages/profilepage.dart')。尝试将名称更正为现有 getter 的名称,或定义一个名为“context”的 getter 或字段。Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
解决方案
BuildContext
不是在颤振应用程序中全局可用的东西。UserProfile
class 可能不是 a Widget
(尽管我无法确定,因为您没有提供此 getter 存在的位置),因此无法自动访问context
.
这可以通过使此函数不是getter 并制作BuildContext
参数来轻松解决。当您调用此函数时,请传递当时可用的任何上下文。
Widget _navigationDrawer(BuildContext context) {
return Container(
height: 60.0,
child: BottomAppBar(
color: Color(0xFF1f2032),
elevation: 35,
shape: CircularNotchedRectangle(),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 35),
child: IconButton(
icon: Icon(Icons.settings,color: Colors.white,),
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
},
),
),
],
)),
);
}
推荐阅读
- c# - 以编程方式发送的电子邮件不存储在“已发送邮件”文件夹 ASP.Net
- python - 如何在 sqlalchemy 中通过布尔条件选择不同的值
- java - 从mysql数据库列接收某些数据后,如何在recyclerview中更改特定卡的颜色
- couchbase - Couchbase - 更新自引用文档中的子项 (N1QL)
- amazon-web-services - S3 API 错误:访问被拒绝 AWS RDS LOAD DATA 从 S3 到 RDS
- scala - 火花模式转换器
- android - 使用实时更新更新缓存数据
- r - 在R中找不到中位数
- asp.net-core - ASP.NET WebAPI 常规路由是否可以在不指定操作和 HTTP 动词约束的情况下工作?
- c++ - 没有运算符“>>”匹配这些操作数?