简体   繁体   中英

A build function returned null ,The relevant error-causing widget was : StreamBuilder<EzuserData>

Hi so I was doing an app like uber but I got an error of this. I'm new in using flutter. Before this, I can run app this normally but suddenly I got this error this morning. This is my code. Can someone help me?

this is the error

A build function returned null. The offending widget is: StreamBuilder To return an empty space that causes the building widget to fill available room, return "Container()". To return an empty space that takes as little room as possible, return "Container(width: 0.0, height: 0.0)".

import 'package:ezbin3/Aboutus.dart';
import 'package:ezbin3/SCREENS/home/map.dart';
import 'package:ezbin3/SCREENS/home/map2.dart';
import 'package:ezbin3/SERVICES/auth.dart';
import 'package:ezbin3/activity.dart';
import 'package:ezbin3/models/user.dart';
import 'package:ezbin3/profile.dart';
import 'package:ezbin3/settings.dart';
import 'package:flutter/material.dart';
import 'package:ezbin3/SERVICES/database.dart';
import 'package:provider/provider.dart';
import 'package:ezbin3/models/ezuser.dart';



class Home extends StatelessWidget {
  final AuthService _auth = AuthService();
  @override
  Widget build(BuildContext context) {
    final user = Provider.of<User>(context);
    return StreamBuilder<EzuserData>(
        stream: DatabaseService(uid: user.uid).userData,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            EzuserData userData = snapshot.data;
            return StreamProvider<List<Ezuser>>.value(
              value: DatabaseService().userz,
              child: Scaffold(
                drawer: Drawer(
                  child: ListView(
                    children: <Widget>[
                      DrawerHeader(
                        decoration: BoxDecoration(
                            gradient: LinearGradient(colors: <Color>[
                          Colors.lightGreen,
                          Colors.green
                        ])),
                        child: Container(
                            child: Column(
                          children: <Widget>[
                            Material(
                              borderRadius:
                                  BorderRadius.all(Radius.circular(50.0)),
                              elevation: 10,
                              child: Padding(
                                padding: EdgeInsets.all(8.0),
                                child: Image.asset(
                                  'image/ezbin2.png',
                                  width: 80,
                                  height: 80,
                                ),
                              ),
                            ),
                            SizedBox(height: 10),
                            Text(
                              userData.name,
                              style: TextStyle(
                                  color: Colors.white, fontSize: 20.0),
                            ),
                          ],
                        )),
                      ),

                      //PROFILE PAGE
                      Padding(
                          padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
                          child: Container(
                            decoration: BoxDecoration(
                                border: Border(
                                    bottom: BorderSide(
                                        color: Colors.grey.shade400))),
                            child: InkWell(
                                splashColor: Colors.lightGreenAccent,
                                onTap: () => Navigator.push(
                                    context,
                                    MaterialPageRoute(
                                        builder: (context) => ProfilePage())),
                                child: Container(
                                  height: 50,
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    children: <Widget>[
                                      Row(
                                        children: <Widget>[
                                          Icon(Icons.person),
                                          Padding(
                                              padding:
                                                  const EdgeInsets.all(8.0),
                                              child: Text('Profile',
                                                  style: TextStyle(
                                                      fontSize: 16.0))),
                                        ],
                                      ),
                                      Icon(Icons.arrow_right)
                                    ],
                                  ),
                                )),
                          )),

                      //ACTIVITY PAGE
                      Padding(
                          padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
                          child: Container(
                            decoration: BoxDecoration(
                                border: Border(
                                    bottom: BorderSide(
                                        color: Colors.grey.shade400))),
                            child: InkWell(
                                splashColor: Colors.lightGreenAccent,
                                onTap: () => Navigator.push(
                                    context,
                                    MaterialPageRoute(
                                        builder: (context) => ActivityPage())),
                                child: Container(
                                  height: 50,
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    children: <Widget>[
                                      Row(
                                        children: <Widget>[
                                          Icon(Icons.description),
                                          Padding(
                                              padding:
                                                  const EdgeInsets.all(8.0),
                                              child: Text('Activity',
                                                  style: TextStyle(
                                                      fontSize: 16.0))),
                                        ],
                                      ),
                                      Icon(Icons.arrow_right)
                                    ],
                                  ),
                                )),
                          )),

                      //SETTING PAGE
                      Padding(
                          padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
                          child: Container(
                            decoration: BoxDecoration(
                                border: Border(
                                    bottom: BorderSide(
                                        color: Colors.grey.shade400))),
                            child: InkWell(
                                splashColor: Colors.lightGreenAccent,
                                onTap: () => Navigator.push(
                                    context,
                                    MaterialPageRoute(
                                        builder: (context) => SettingPage())),
                                child: Container(
                                  height: 50,
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    children: <Widget>[
                                      Row(
                                        children: <Widget>[
                                          Icon(Icons.settings),
                                          Padding(
                                              padding:
                                                  const EdgeInsets.all(8.0),
                                              child: Text('Settings',
                                                  style: TextStyle(
                                                      fontSize: 16.0))),
                                        ],
                                      ),
                                      Icon(Icons.arrow_right)
                                    ],
                                  ),
                                )),
                          )),

                      //ABOUT US PAGE
                      Padding(
                          padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
                          child: Container(
                            decoration: BoxDecoration(
                                border: Border(
                                    bottom: BorderSide(
                                        color: Colors.grey.shade400))),
                            child: InkWell(
                                splashColor: Colors.lightGreenAccent,
                                onTap: () => Navigator.push(
                                    context,
                                    MaterialPageRoute(
                                        builder: (context) => AboutusPage())),
                                child: Container(
                                  height: 50,
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    children: <Widget>[
                                      Row(
                                        children: <Widget>[
                                          Icon(Icons.info_outline),
                                          Padding(
                                              padding:
                                                  const EdgeInsets.all(8.0),
                                              child: Text('About Us',
                                                  style: TextStyle(
                                                      fontSize: 16.0))),
                                        ],
                                      ),
                                      Icon(Icons.arrow_right)
                                    ],
                                  ),
                                )),
                          )),

                      //LOG OUT
                      Padding(
                          padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
                          child: Container(
                            decoration: BoxDecoration(
                                border: Border(
                                    bottom: BorderSide(
                                        color: Colors.grey.shade400))),
                            child: InkWell(
                                splashColor: Colors.lightGreenAccent,
                                onTap: () async {
                                  await _auth.signOut();
                                  print('logout');
                                },
                                child: Container(
                                  height: 50,
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    children: <Widget>[
                                      Row(
                                        children: <Widget>[
                                          Icon(Icons.lock),
                                          Padding(
                                              padding:
                                                  const EdgeInsets.all(8.0),
                                              child: Text('Log Out',
                                                  style: TextStyle(
                                                      fontSize: 16.0))),
                                        ],
                                      ),
                                      Icon(Icons.arrow_right)
                                    ],
                                  ),
                                )),
                          ))
                    ],
                  ),
                ),
                backgroundColor: Colors.green[50],
                appBar: AppBar(
                  title: Text('EZBIN'),
                  backgroundColor: Colors.green[400],
                  elevation: 0.0,
                  actions: <Widget>[],
                ),
                body: //HomeGoogle(),
                     MapSample(),
              ),
            );
          }
        });
  }
}

If anything happens please let me know. Thank you

Let's take a look at the error message

A build function returned null. The offending widget is: StreamBuilder

That means, that somewhere in your program a StreamBuilder (or its build method) is not returning a Widget, but null . Now let's take a look at your code.

return StreamBuilder<EzuserData>(
  stream: DatabaseService(uid: user.uid).userData,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      EzuserData userData = snapshot.data;
      return StreamProvider<List<Ezuser>>.value(
        ...
      );
    }
  });
}

With the error and the simplified code in mind, where could you not return a Widget, but instead no value at all? Hint: What happens, if snapshot.hasData is not true?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM