我有一个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()之后,但是我必须返回一个视图。
谢谢