我想将querysnapshot数据从一个窗口小部件传递到另一个窗口小部件。我正在从Firebase获取数据,并且希望在小部件之间传递数据。如何将数据从一个屏幕传递到另一屏幕?
这是我的代码的样子:
class Dashboard extends StatefulWidget {
@override
_DashboardState createState() => _DashboardState();
}
class _DashboardState extends State<Dashboard> {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('schedules').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
snapshotData = snapshot.data;
return Container(
child: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
if (snapshot.data.documents[index]['uid']
.contains(userData.uid)) {
return GestureDetector(
onTap: () {
Route route = MaterialPageRoute(
builder: (context) => ViewSchedule(//here i want pass));
Navigator.push(context, route);
},
child: Container(
height: 180,
width: double.infinity,
),
);
} else {
return Container();
}
})),
],
));
} else {
return Column();
}
});
}
}
答案 0 :(得分:1)
在ViewSchedule类中,添加一个构造函数
final QuerySnapshot querySnapshot;
ViewSchedule({@required this.querySnapshot})
然后在MaterialPageRoute中添加以下更改
MaterialPageRoute(
builder: (context) => ViewSchedule(querySnapshot:snapshot.data));// pass querySnapshot here
现在,如果您的ViewSchedule
小部件是无状态的,则可以直接在小部件中使用this.querySnapshot
访问它,并使用
print("Printing querysnapshot: ${this.querySnapshot}");
如果它是有状态的小部件,则可以在有状态的小部件中使用widget.querySnapshot
访问它。
print("Printing querysnapshot: ${widget.querySnapshot}");