Flutter-StreamBuilder中未处理的异常

时间:2019-04-01 11:25:21

标签: dart flutter

我使用streamBuilder进行API调用。根据要求,我必须在API成功响应后转到下一个屏幕。以下是我的代码。

@override
  Widget build(BuildContext context) {
   return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: new Container(
        padding: EdgeInsets.all(16.0),
        child:StreamBuilder(
          stream: bloc.validateUser,
          builder: (BuildContext context, snapshot) {
            if(snapshot.hasData){
              _moveToHomeScreen();
            }
            return Column(
              children: <Widget>[
                _createInputFields(),
                _createRegisterButton(),
              ],
            );
          }
        ),
      ),
  }

AND

void _moveToHomeScreen () async {
    await Navigator.pushReplacement(
      context, MaterialPageRoute(builder: (BuildContext context) => HomeScreen())
    );
  }

但是我的控制台出现以下错误:

  

[VERBOSE-2:shell.cc(184)] Dart错误:未处理的异常:setState()   或在构建过程中调用的markNeedsBuild()。此叠加小部件不能是   标记为需要构建,因为该框架已经在   构建小部件的过程。可以将小部件标记为需要   仅在其祖先之一当前处于构建阶段时构建   建造。允许此异常是因为框架可以构建   父部件在孩子之前,这意味着肮脏的后代会   总是被建造。否则,框架可能无法访问此小部件   在此构建阶段。 setState()或   被称为markNeedsBuild()的是:
  重叠式[LabeledGlobalKey#910a3](状态:   OverlayState#70d3b(条目:[OverlayEntry#eabf3(opaque:false;   maintenanceState:false),OverlayEntry#1d477(opaque:false;   maintainState:true),OverlayEntry#2878e(不透明:false; maintainState:   false),OverlayEntry#f7614(opaque:false; maintainState:true)]))   当thefendi <...>

时当前正在构建的小部件

0 个答案:

没有答案