Как правильно вернуть StreamBuilder ConnectionState из активного состояния в ожидание? - PullRequest
0 голосов
/ 05 октября 2019

Я использую StreamBuilder в своем пользовательском интерфейсе ... и я использую переключатель на ConnectionState, как показывает код ... будет, когда я проверяю ошибки типа "Тайм-аут" .. приложение показывает кнопку повторения ... и я вызываюснова данные, используя блок .. в этот конкретный момент мне нужно ConnectionState, чтобы вернуться к ожиданию .. так что потоковый построитель покажет загрузчик.

Я попробовал snapshot.inState (ConnectionState.waiting);при нажатии кнопки повтора .. не работает

// вот код

Виджет streamBuilder () {

return StreamBuilder(

    stream: blocFaQs.subject.stream,

    builder: (BuildContext _context, AsyncSnapshot<FaQsModel> snapshot) {




      if(snapshot.hasError ){
        return Container(
          child: Center(
            child: Column(
              children: <Widget>[
                Text(snapshot.error.toString()),
                RaisedButton(
                  onPressed: (){
                    initBloc();

                  },
                  color: GlobalColors.getGlobalColorByName("purple_dark"),
                  child:Text("Retry") ,
                )
              ],
            ),
          ),
        );
      }


      switch (snapshot.connectionState) {
        case ConnectionState.none:
          return Text('there is no conection.');
        case ConnectionState.waiting:
          {


            return Container(
              height: MediaQuery.of(context).size.height * 0.7,
              child: Center(
                child: CustomLoader.buildLoader(
                    LoaderType.SpinKitChasingDots,
                    LoaderSize.BigLoader),
              ),
            );
          }
        case ConnectionState.active:{


            if(snapshot.data.E.isError==true){
              return Container(
                child: Center(
                  child: Column(
                    children: <Widget>[
                      Text(snapshot.data.E.errorMessage),
                      RaisedButton(
                        onPressed: (){
                            snapshot.inState(ConnectionState.waiting);
                          initBloc();
                          setState(() {

                          });

                        },
                        color: GlobalColors.getGlobalColorByName("purple_dark"),
                        child:Text("Retry") ,
                      )
                    ],
                  ),
                ),
              );
            }



            return ListView.builder(
                itemCount: snapshot.data.result.items.length,
                itemBuilder: (BuildContext ctxt, int index) {

                  var question = (snapshot.data.result.items[index].question);
                  var answer = (snapshot.data.result.items[index].answer);

                  //  Card Help_buildCard(int id,int active,String TicketName,String Status,String Time,String Issu,String Answer)
                  return Help_buildGroovinExpansionTile(
                      question, answer);

                });



        }

        case ConnectionState.done:{
           return Text("");
        }
      }

      return Text("Unreachable");


    });

}

...