Как вызвать Future на Firebase снимок во Флаттере? - PullRequest
0 голосов
/ 13 мая 2018

Я получаю повторяющуюся ошибку, которая длится всего секунду или две, когда я возвращаю снимок с помощью StreamBuilder с надписью «снимок вызван на ноль». Я считаю, что мне нужно сделать мой снимок асинхронным, но я могу ошибаться. Вот мой код ...

child: new StreamBuilder(
                        stream: fb.child('UserVideo/${fUser.uid}').orderByKey().onValue,
                        builder: (BuildContext context, AsyncSnapshot<Event> event) {
                          if (event.data.snapshot.value == null) {
                            return new Card(
                              child: new Center(
                                child: new Text('SEARCH',
                                    textAlign: TextAlign.center,
                                    style: new TextStyle(
                                        fontSize: 30.0,
                                        fontFamily: 'Chewy',
                                        color: Colors.black)),
                              ),
                            );
                          } else if (event.data.snapshot.value != null) {
                              Map unsorted =
                                  event.data.snapshot.value; //store each map

                              final myMap =
                              new SplayTreeMap<String, dynamic>.from(
                                  unsorted,
                                      (a, b) => unsorted[a]['rank']
                                      .compareTo(unsorted[b]['rank']));

                              //Map myMap = event.data.snapshot.value; //store each map
                              var titles = myMap.values;

                              List onesTitles = new List();
                              List onesIds = new List();
                              List onesImages = new List();
                              List onesRank = new List();

                              for (var items in titles) {
                                onesTitles.add(items['title']);
                                onesIds.add(items['videoID']);
                                onesImages.add(items['imageString']);
                                onesRank.add(items['rank'].toString());
                              }

                              names = onesTitles;
                              ids = onesIds;
                              numbers = onesRank;
                              vidImages = onesImages;

Я размещаю свою информацию о пользователях в списки, затем заполняю информацию о карте.

1 Ответ

0 голосов
/ 13 мая 2018

Использование оператора безопасной навигации должно предотвратить эту ошибку

event.data?.snapshot?.value

Он элюирует последующие части только в том случае, если части до оцениваются в != null

...