后端响应成功时打开新屏幕

时间:2019-07-29 02:01:08

标签: flutter dart rxdart

我有一个SplashScreen,可从我的Api检索信息。当响应成功时,我想打开第二个屏幕,但是出现错误,因为在打开新屏幕的方法之后,我需要添加一些返回小部件。

 @override
 Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black,
      body: StreamBuilder(
        stream: bloc.appInformation,
        builder: (context, AsyncSnapshot<AppInformationModel> snapshot){
          return onResponse(snapshot);
        },
      ),
    );
  }

我的响应方法如下。

  Widget onResponse(AsyncSnapshot<AppInformationModel> snapshot) {
    if (snapshot.hasData) {
      openMain();
      return Center(
        child: Text(
          snapshot.data.version,
          style: TextStyle(color: Colors.white, fontSize: 30.0),
        ),
      );
    } else if (snapshot.hasError) {
      return Text('Error');
    }
    return Center(child: CircularProgressIndicator());
  }

openMain()就是

      void openMain() {
    Navigator.pushNamed(context, 'home');
  }

我的第二个屏幕工作正常。

错误是

  在构建onTap期间调用

setstate或markneedsbuild

我了解是因为我的返回小部件在opanNavigation()之后,但是我必须返回一个视图。

谢谢

0 个答案:

没有答案