Как нам нужно работать со снимками и будущими строителями? - PullRequest
0 голосов
/ 24 апреля 2020

В тот момент, когда я использую futurebuilder и snapshot, я делаю так: в будущем я устанавливаю функцию с данными. После того, как я тестирую snapshot.connectionState с ожиданием. Что вы думаете об этом способе работы, я не уверен, что он правильный

FutureBuilder(
              future: ListLotto,
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                switch (snapshot.connectionState) {
                  case ConnectionState.waiting:
                    return new Center(
                      child: new CircularProgressIndicator(),);
                  default:
                    if (snapshot.hasError) {
                      return new Center(
                        child: new Text('Error: ${snapshot.error}'),);
                    }
                    else {
                        List<Lotto_grid> values = snapshot.data;
                        if (values.isEmpty) {
                        return Container(

1 Ответ

0 голосов
/ 24 апреля 2020
   FutureBuilder(
          future: myFuture,
          initialData: initialValue,//specify it if necessary
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            switch(snapshot.connectionState){
              case ConnectionState.done:
                if(snapshot.hasError) {
                  return myErrorWidget();
                } else if(snapshot.hasData) {
                  return MyDataWidget();
                } else{//if snapshot.data == null
                  return MyOtherWidget();
                }
              default:
                return CircularProgressIndicator();
            }
          }
      )

Этот вариант лучше, так как он проверяет, являются ли данные нулевыми, поэтому вы не получите NullPointerException в этой строке:

Список значений = snapshot.data;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...