什么是将StreamBuilder ConnectionState从活动状态返回到等待状态的正确方法?

时间:2019-10-05 10:03:21

标签: flutter dart bloc stream-builder dio

我在UI中使用StreamBuilder ..并且正在使用ConnectionState上的开关 如代码所示,当我检查“超时”之类的错误时,..应用程序显示重试按钮..,在这一特定时刻,我再次使用bloc ..调用数据,我需要ConnectionState返回等待状态。 .so streambuilder显示加载程序。

我尝试了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");


    });

}

0 个答案:

没有答案
相关问题