繁体   English   中英

Flutter - Streambuilder 错误,因为没有返回

[英]Flutter - Streambuilder Error due to no return

我的 Streambuilder 出现错误。 我不明白如何解决它。 拜托,你能帮我解决这个问题吗? 非常感谢。

theftion trible tribrars捕获的例外╞═════════════════════════════════════════ ══════════════════ The following assertion was thrown building StreamBuilder(dirty, state: _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot>#47274): A build function returned null. 有问题的小部件是:StreamBuilder 构建函数绝不能返回 null。

StreamBuilder<QuerySnapshot>(
                  stream: FirebaseFirestore.instance
                      .collection('Users')
                      .doc(FirebaseAuth.instance.currentUser.uid)
                      .collection('projects')
                      .snapshots(),
                  builder: (context, snapshot) {
                    if (!snapshot.hasData)
                      const Text("Loading.....");
                    else {
                      List<DropdownMenuItem> projectItems = [];
                      for (int i = 0; i < snapshot.data.docs.length; i++) {
                        DocumentSnapshot snap = snapshot.data.docs[i];
                        projectItems.add(
                          DropdownMenuItem(
                            child: Text(
                              (snap.data()['project_Name']),
                              style: TextStyle(color: Colors.black),
                            ),
                            // snap.id,
                            //  style: TextStyle(color: Color(0xff11b719)),
                            // ),
                            value: (snap.data()['project_Name']),
                          ),
                        );
                        return Row(
                          mainAxisAlignment: MainAxisAlignment.start,
                          children: <Widget>[
                            DropdownButton(
                              items: projectItems,
                              onChanged: (projectSelected) {

                                final snackBar = SnackBar(
                                  content: Text(
                                    'Selected project is $projectSelected',
                                    style: TextStyle(color: Color(0xff11b719)),
                                  ),
                                );
                                Scaffold.of(context).showSnackBar(snackBar);
                                setState(() {
                                  selectedProject = projectSelected;
                                });
                              },
                              value: selectedProject,
                              isExpanded: false,
                              hint: new Text(
                                projectName,
                                style: TextStyle(color: Color(0xff11b719)),
                              ),
                            ),
                          ],
                        );
                      }
                    }
                  }),



问题很明显,编译器告诉了你。 builder总是需要返回一个Widget 但是当条件if (.snapshot.hasData)被执行时,您的代码不会这样做。 您必须将其更改为:

if (!snapshot.hasData) {
  return Text('Loading...');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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