Flutter-无法从StreamBuilder加载Widget

问题描述 投票:0回答:1

我正在使用BLoC调用API。成功响应后,我需要调用Widget命名

_moveToHomeScreen()

。以下是我的代码

@override
  Widget build(BuildContext context) {
   return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      //body: UserDetail(),
      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(),
              ],
            );
          }
        ),
    );
  }

Widget _moveToHomeScreen ()  {
    print('inside move to home screen');
    return Center(
      child: Opacity(
        opacity: 0.5,
        child: Text(
          "Save a person to see them here!",
          key: Key("Placeholder"),
        ),
      ),
    );
  }

控制进入Widget,但我无法从Widget看到所需的输出。

dart flutter
1个回答
1
投票

您的Streambuilder永远不会返回_moveToHomeScreen();

override
Widget build(BuildContext context) {
return Scaffold(
  appBar: AppBar(
    // Here we take the value from the MyHomePage object that was created by
    // the App.build method, and use it to set our appbar title.
    title: Text(widget.title),
   ),
  //body: UserDetail(),
  body: new Container(
    padding: EdgeInsets.all(16.0),
    child:StreamBuilder(
      stream: bloc.validateUser,
      builder: (BuildContext context, snapshot) {
        if(snapshot.hasData){
          return _moveToHomeScreen();
        }
        return Column(
          children: <Widget>[
            _createInputFields(),
            _createRegisterButton(),
          ],
        );
      }
    ),
 );
}

刚刚在_moveToHomeScreen();之前添加了回报

© www.soinside.com 2019 - 2024. All rights reserved.