Flutter 有没有办法使用pushNamed将多个索引参数传递到另一个屏幕?
我正在尝试使用ListViewBuilder和卡片导航到新屏幕。我目前有我的命名路由集,因此它接受我解析的json模型的索引。所以问题是如何传递'name'字符串参数,以及'nextEpisodes'ListString和'prevescents'ListString。我想在下一个屏幕上访问所有这些变量 提前谢谢Flutter 有没有办法使用pushNamed将多个索引参数传递到另一个屏幕?,flutter,dart,Flutter,Dart,我正在尝试使用ListViewBuilder和卡片导航到新屏幕。我目前有我的命名路由集,因此它接受我解析的json模型的索引。所以问题是如何传递'name'字符串参数,以及'nextEpisodes'ListString和'prevescents'ListString。我想在下一个屏幕上访问所有这些变量 提前谢谢 您可以通过这种方式将整个列表项从列表的特定索引从一个屏幕发送到另一个屏幕 甲级以内 请检查它的示例,以便将数据从一个类传递到另一个类 向B类发送数据的类 上述程序的输出如下 您可以通过
您可以通过这种方式将整个列表项从列表的特定索引从一个屏幕发送到另一个屏幕 甲级以内 请检查它的示例,以便将数据从一个类传递到另一个类 向B类发送数据的类 上述程序的输出如下
您可以通过这种方式将整个列表项从列表的特定索引从一个屏幕发送到另一个屏幕 甲级以内 请检查它的示例,以便将数据从一个类传递到另一个类 向B类发送数据的类 上述程序的输出如下
谢谢你回复我!在A班你的意思是写:```列表=新列表;````吗我的构造函数类的名称在哪里?我已经这样实现了它,但是我得到了一个错误:字符串不能分配给您的参数类型_BEAN@Stridermn我已经用演示实例更新了解决方案,请检查一次,如果有问题请告诉我谢谢你回复我!在A班你的意思是写:```列表=新列表;````吗我的构造函数类的名称在哪里?我已经这样实现了它,但是我得到了一个错误:字符串不能分配给您的参数类型_BEAN@Stridermn我已经用演示实例更新了解决方案,请检查一次,如果出现问题请通知我。我已经用演示实例更新了解决方案,请检查一次,如果有问题请通知我。我已经用演示实例更新了解决方案,如果有问题请检查一次并通知我
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<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
);
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();
}
}
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,
),
];
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} ")
],
),
)));
}
}
class Fields {
final String title;
final int rating;
Fields(this.title, this.rating);
}