【问题标题】:How i can pass QuerySnapshot data from one widget to another widget in flutter?如何在颤动中将 QuerySnapshot 数据从一个小部件传递到另一个小部件?
【发布时间】:2020-08-20 12:41:35
【问题描述】:

我想将查询快照数据从一个小部件传递到另一个小部件。我正在从 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();
          }
        });
  }
}

【问题讨论】:

    标签: firebase flutter firebase-realtime-database dart


    【解决方案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}");
    

    【讨论】:

    • 如何在 ViewSchedule 小部件中打印传递的数据
    • 我已经更新了我的答案,展示了如何使用 querySnapshot,看看
    猜你喜欢
    • 2020-08-08
    • 2020-02-22
    • 2020-11-15
    • 2021-09-26
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多