Как я могу передать данные QureySnapshot из одного виджета в другой виджет во флаттере? - PullRequest
0 голосов
/ 05 мая 2020

Я хочу передать данные Qureysnapshot из одного виджета в другой. Я получаю данные из 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();
          }
        });
  }
}

1 Ответ

0 голосов
/ 05 мая 2020

В своем классе 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}");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...