iPhone
iPhone

Reputation: 4170

Flutter-Not able to load Widget from StreamBuilder

I am calling API using BLoC. On successful response, I need to call Widget named

_moveToHomeScreen()

. Following is my code for that

@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(),
              ],
            );
          }
        ),
    );
  }

AND

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"),
        ),
      ),
    );
  }

Control goes into the Widget but I am not able to see desired output from Widget.

Upvotes: 0

Views: 528

Answers (1)

Mangaldeep Pannu
Mangaldeep Pannu

Reputation: 3987

Your Streambuilder never returns _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(),
          ],
        );
      }
    ),
 );
}

Just added return before _moveToHomeScreen();

Upvotes: 1

Related Questions