- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用ListViewBuilder和Cards导航到新屏幕。目前,我已设置了命名路由,以便它接受已解析的json模型的索引。因此,问题是如何传递“名称”(String)参数以及“nextEpisodes”(ListString)和“prevEpisodes”(ListString)。我想在下一个屏幕上访问所有这些变量。
提前致谢。
ListView.builder(
shrinkWrap: true,
itemCount: slist.length,
itemBuilder: (context, index) {
print(slist[index].prevEpisodes);
return Card(
child: ListTile(
onTap: () {
Navigator.of(context).pushNamed('/episodes', arguments: slist[index].name);
},
title: Text(slist[index].name),
// subtitle: Text(shows[index].showNextAirDate),
// leading: CircleAvatar(
// backgroundImage:
// AssetImage('assets/${shows[index].showPic}'),
// ),
trailing: Icon(Icons.keyboard_arrow_right,
color: Colors.black26, size: 30.0)),
);
}),
最佳答案
您可以像这样将List
的特定索引中的整个列表项从一个屏幕发送到另一个屏幕
Inside the class A
List<YOUR_BEAN> list = new List<YOU_BEAN>();
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => B(bean: list [index])), //// HERE B IS THE CLASS ON WHICH YOU NEED TO CARRY DATA FROM CLASS A
);
B
类中,您需要添加构造函数以从
A
类中捕获值,如下所示
class B extends StatefulWidget {
YOUR_BEAN bean;
B ({Key key, @required this.bean}) : super(key: key); ////YOU WILL GET THE DATA HERE FROM THE CONSTRUCTOR , AND USE IT INSIDE THE CLASS LIKE "widget.bean"
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _B();
}
}
A class which send data to B class
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'B.dart';
import 'Fields.dart';
class A extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _A();
}
}
class _A extends State<A> {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Screen A',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
appBar: new AppBar(),
body: Container(
margin: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(10.0),
child: Text("Screen A"),
),
Expanded(
child: ListView.builder(
itemCount: fields.length,
itemBuilder: (BuildContext ctxt, int index) {
return ListTile(
title: new Text("Rating #${fields[index].rating}"),
subtitle: new Text(fields[index].title),
onTap: (){
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => B(bean: fields [index])), //// HERE B IS THE CLASS ON WHICH YOU NEED TO CARRY DATA FROM CLASS A
);
},
);
}),
)
],
),
)));
}
}
List<Fields> fields = [
new Fields(
'One',
1,
),
new Fields(
'Two',
2,
),
new Fields(
'Three',
3,
),
new Fields(
'Four',
4,
),
new Fields(
'Five',
5,
),
];
Now check B class which receive the data from A class
import 'package:flutter/material.dart';
import 'Fields.dart';
class B extends StatefulWidget{
Fields bean;
B ({Key key, @required this.bean}) : super(key: key); ////YOU WILL GET THE DATA HERE FROM THE CONSTRUCTOR , AND USE IT INSIDE THE CLASS LIKE "widget.bean"
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _B ();
}
}
class _B extends State<B> {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
title: 'Screen A',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
appBar: new AppBar(),
body: Container(
margin: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(10.0),
child: Center(
child: Text("Screen B" ,style: TextStyle(fontSize: 20.0),),
)
),
Text("Rating=>>> ${widget.bean.rating} and Title ${widget.bean.title} ")
],
),
)));
}
}
Fields.dart
class Fields {
final String title;
final int rating;
Fields(this.title, this.rating);
}
And the output of the above program as follow.
关于flutter - 有没有一种方法可以使用pushNamed将多个索引参数传递给另一个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61742331/
假设我有两条路线 /firstRoute 和 /secondRoute , 对于小部件 第一路和 二线分别。我正在使用一些参数将命名路由插入堆栈,就像这样...... Navigator.pushNa
之前可能有人问过,但我找不到,但是如何将参数传递给命名路由? 这就是我构建路线的方式 Widget build(BuildContext context) { return new Navig
我想用我的 CustomPageRoute在 Navigator.pushNamed()但我找不到使用它的方法。 但是,我可以通过以下方式使用它 Navigator.push(context, Cus
我需要将一些参数发送到命名路由。我想做类似的事情: Navigator.pushNamed('/route/1'); 或者 Navigator.pushNamed('/route?param1=1')
我想要做的是在我使用 http 客户端从网络获取一些信息时显示一个具有加载状态的小部件。然后根据结果自动导航到不同的路线。 这是我的代码: class Home extends StatelessWi
我正在尝试将注册屏幕移至 OTP 屏幕。从注册屏幕我需要将电子邮件 ID 传递到 OTP 屏幕。现在,我在下面使用,但无法解析参数:其中的参数。 Navigator.pushNamed(context
我使用 pushNamed() 从屏幕获取返回数据,如下所示: _pushToPage2() async { String result = await Navigator.pushNamed
我可以用 MaterialPageRoute 做到这一点: Navigator.push( context, MaterialPageRoute( builder: (context
我正在尝试创建一个 Dismissible 小部件,但我想要路由器历史记录,我的意思是当我使用 onDismissed 事件转到另一条路线时,当用户在该新 View 上按下后退按钮时将返回到第一个 V
谁能在 Flutter 中概述 push 与 pushNamed 的优缺点? 做一些研究,我唯一能找到的是 this GitHub issue要求同样的事情。 这是我的理解: 推送 不使用字符串,因此
我有一个 routing像这样: routes: { '/': (context) => MainPage(), '/othe_page': (context) => OthePage
所以基本上我正在开发一个货币应用程序,在您使用应用程序货币向您的帐户收费后,我验证了付款是否已完成,我需要重定向到主页,但每次都会崩溃,当所有其他自定义路线正在运行。 app.dart:(这是我的路线
我正在尝试制作如下所示的叠加层: https://www.didierboelens.com/2018/06/how-to-create-a-toast-or-notifications-notion
下面类 TestWidget 中的 build 函数在执行导航代码时被调用两次。 Test Widget 在控制台上打印了两次。 有谁知道为什么会这样? class TestWidget exten
使用 Flutter,我试图通过构造函数将数据传递到新屏幕。 但是,这有点特殊,因为屏幕是有状态的小部件,我使用的是 Navigation Routes 导航方法。 如果重要的话,数据也恰好是 int
我是一名优秀的程序员,十分优秀!