- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这种特殊情况下,如何进行导航以打开新的命名路线?
现在,如下所示,它给了我错误:未定义名称'context'。
如何使用包含BuildContext上下文小部件的卡片小部件中的命名路线进行导航(请参见代码底部)?
这是下面主页的完整代码:
import 'package:flutter/material.dart';
import 'package:projectname/theme/light_color.dart';
class HomePage extends StatelessWidget {
HomePage({Key key}) : super(key: key);
double width;
Widget _categoryRow(
String title,
Color primary,
Color textColor,
) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 20),
height: 30,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
title,
style: TextStyle(
color: LightColor.titleTextColor, fontWeight: FontWeight.bold),
),
],
),
);
}
/////////////////////////////////////////////////
Widget _featuredRowA() {
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
InkResponse(
onTap: () {
Navigator.pushNamed(context, '/HomePage');
},
child: _card(
primary: LightColor.seeBlue,
chipColor: LightColor.seeBlue,
backWidget: _decorationContainerD(
LightColor.darkseeBlue, -100, -65,
secondary: LightColor.lightseeBlue,
secondaryAccent: LightColor.seeBlue),
chipText1: "For the second page",
chipText2: "TAP HERE",
isPrimaryCard: true,
imgPath: ""),
),
],
),
),
);
}
////////////////////////////////////////////
Widget _card(
{Color primary = Colors.redAccent,
String imgPath,
String chipText1 = '',
String chipText2 = '',
Widget backWidget,
Color chipColor = LightColor.orange,
bool isPrimaryCard = false}) {
return Container(
height: isPrimaryCard ? 190 : 190,
width: isPrimaryCard ? width * .40 : width * .40,
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 20),
decoration: BoxDecoration(
color: primary.withAlpha(200),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: <BoxShadow>[
BoxShadow(
offset: Offset(0, 5),
blurRadius: 10,
color: LightColor.lightpurple.withAlpha(20))
]),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(20)),
child: Container(
child: Stack(
children: <Widget>[
backWidget,
Positioned(
top: 20,
left: 10,
child: CircleAvatar(
backgroundColor: Colors.transparent,
backgroundImage: NetworkImage(imgPath),
)),
Positioned(
bottom: 10,
left: 10,
child: _cardInfo(chipText1, chipText2,
LightColor.titleTextColor, chipColor,
isPrimaryCard: isPrimaryCard),
)
],
),
),
));
}
Widget _cardInfo(String title, String courses, Color textColor, Color primary,
{bool isPrimaryCard = false}) {
return Align(
alignment: Alignment.bottomLeft,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.only(right: 10),
width: width * .32,
alignment: Alignment.topCenter,
child: Text(
title,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: isPrimaryCard ? Colors.white : textColor),
),
),
SizedBox(height: 14),
_chip(courses, primary, height: 5, isPrimaryCard: isPrimaryCard)
],
),
);
}
Widget _chip(String text, Color textColor,
{double height = 0, bool isPrimaryCard = false}) {
return Container(
alignment: Alignment.center,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: height),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(15)),
color: textColor.withAlpha(isPrimaryCard ? 200 : 50),
),
child: Text(
text,
style: TextStyle(
color: isPrimaryCard ? Colors.white : textColor, fontSize: 26),
),
);
}
Widget _decorationContainerA(Color primary, double top, double left) {
return Stack(
children: <Widget>[
Positioned(
top: top,
left: left,
child: CircleAvatar(
radius: 100,
backgroundColor: primary.withAlpha(255),
),
),
_smallContainer(primary, 20, 40),
],
);
}
Widget _decorationContainerD(Color primary, double top, double left,
{Color secondary, Color secondaryAccent}) {
return Stack(
children: <Widget>[
_smallContainer(LightColor.yellow, 18, 35, radius: 12),
],
);
}
Positioned _smallContainer(Color primary, double top, double left,
{double radius = 0}) {
return Positioned(
top: left,
left: left,
child: CircleAvatar(
radius: radius,
backgroundColor: primary.withAlpha(255),
));
}
@override
Widget build(BuildContext context) {
width = MediaQuery.of(context).size.width;
return Scaffold(
body: SingleChildScrollView(
child: Container(
child: Column(
children: <Widget>[
SizedBox(height: 20),
_categoryRow("", LightColor.orange, LightColor.orange),
_featuredRowA(),
],
),
),
),
);
}
}
最佳答案
您应该将上下文传递给您的小部件。
Widget _featuredRowA(BuildContext context) {
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
InkResponse(
onTap: () {
Navigator.pushNamed(context, '/HomePage');
},
child: _card(
primary: LightColor.seeBlue,
chipColor: LightColor.seeBlue,
backWidget: _decorationContainerD(
LightColor.darkseeBlue, -100, -65,
secondary: LightColor.lightseeBlue,
secondaryAccent: LightColor.seeBlue),
chipText1: "For the second page",
chipText2: "TAP HERE",
isPrimaryCard: true,
imgPath: ""),
),
],
),
),
);
}
@override
Widget build(BuildContext context) {
width = MediaQuery.of(context).size.width;
return Scaffold(
body: SingleChildScrollView(
child: Container(
child: Column(
children: <Widget>[
SizedBox(height: 20),
_categoryRow("", LightColor.orange, LightColor.orange),
_featuredRowA(context),
],
),
),
),
);
}
关于android - 如何使用卡片小部件中的命名路线进行导航?给我错误:未定义名称 'context',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61377541/
我有两种类型的路由 Public 和 Private。 只有用户登录后才能访问所有私有(private)路由: return tokenService.token ? ( <>
我已按照 Laravel 5.5 文档在我们的应用程序上要求、安装和配置 Laravel Passport。我们仅使用密码授予功能,因为我们不打算将其用作社交登录工具。但是,按照所有说明操作后,我在尝
我想设置事件菜单项的样式,为此我需要将当前 url 与路由进行比较。我知道我可以在 javascript 中做到这一点,但我想知道其他人是如何解决这个问题的。 有什么建议么? 伪代码: My Page
我正在尝试在浏览器上以图形方式显示路径/路线以供客户查看。例如,基于 txt 或 XML 文件,包含说明。 4 90 5 90 2 或 F4,L90,F5,L90,F2 相当于
我创建了一个中间件来阻止我的 laravel 应用程序中的某些路由,但不起作用,无法弄清楚我做错了什么,这是我的代码: ps:我使用的是 laravel 5.2 路线: Route::get('sec
我正在使用 Java 工作。给定一个矩阵 NxM,我需要找到通过该数组的所有可能路径。只允许斜向上或斜向下,或向右斜行。 4x4 矩阵示例: 3 5 7 9 2 4 6 8 9 3 7
我是 Marionette 新手,只是找不到上类路线。 我正在使用 Marionette 的 2.4.1 版本,并尝试以最简单的方式进行操作,以便它能够正常工作。 此代码适用于旧版本的 Marione
我是 AngularJS 的新手。我正在尝试从这个网站( https://docs.angularjs.org/tutorial/step_07 )学习 AngularJS。我的代码如下 index.
我在 yandexmapkit-android 项目上工作。图书馆链接是 https://github.com/yandexmobile/yandexmapkit-android 文档非常薄弱,git
我正在阅读有关 Angular 路由的文档并创建了一个简单的测试: const routes: Route[] = [ { path: '', redirectTo: '/home', pat
我正在开发一项服务 (spring-boot),它获取一个 ID 列表,一个一个地从数据库中获取对象,将这些对象聚合成批处理,然后将它们保存在其他地方。目前,聚合后的批量大小约为 50 个对象,大约每
我正在制作一个网站,在用户登录后,用户将被重定向到主页。网站的主页和所有其他页面只能由登录用户访问,但即使在用户登录后(firebase auth),网站的其余部分( protected 路由)仍然无
我有一个惰性模块,我希望在桌面和移动设备上有不同的体验。基本上我想要我的桌面布局如下: Component1 显示一个列表,用户在列表中选择一个项目,component2 将显示详细信息。我创建了名为
我是 Angular 的新手,我正在尝试让我的路由器工作。基本上我在 / 有一个主页,其中有一个到 /courses 的路由器链接,它运行良好,但是当我重新加载 /courses 时(或输入地址in)
完整的 Mojolicious 应用程序有 routes将转储应用程序路由的命令: script/my_app.pl routes 我如何从 Lite 的测试脚本中做同样的事情应用? use Mojo
我有一个 Camel 2.13.1 应用程序,它使用我通过 CXF 组件访问的外部 Web 服务。我使用 Spring XML 路由元素的 startupOrder 属性来确保在我设置为在启动时调用一
我们有一个在 Karaf 2.4.3 和 Camel 2.15.3 上运行的数据处理应用程序。 在这个应用程序中,我们有一堆导入数据的路由。我们有一个管理 View ,其中列出了这些路由以及每条路由的
我正在尝试组合一个应用程序,我可以在其中查询谷歌路线服务,存储结果以建立缓存,然后根据需要呈现路线。 我可以取回方向数据并将其存储在数据库中就好了,这一切都很好,现在当我在 map 上渲染方向时,我的
我根据 Ryan Bates 的 railscast 使用设计登录创建了一个新项目. 它没有注册路线(与我之前制作的项目不同,步骤完全相同) This image显示了两个“rake 路由”命令。顶
我发现 Google Maps API 通过以下方式支持路线: var map; var directionsPanel; var directions; function initialize()
我是一名优秀的程序员,十分优秀!