Flutter 颤振-由于无返回导致Streambuilder错误
我的Streambuilder出现错误。我不知道如何修理它。 拜托,你能帮我解决这个问题吗? 非常感谢 ══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════ 在生成StreamBuilder时引发了以下断言(脏,状态: _StreamBuilderBasState#47274): 生成函数返回null。 有问题的小部件是: StreamBuilder 构建函数不能返回nullFlutter 颤振-由于无返回导致Streambuilder错误,flutter,stream-builder,Flutter,Stream Builder,我的Streambuilder出现错误。我不知道如何修理它。 拜托,你能帮我解决这个问题吗? 非常感谢 ══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════ 在生成StreamBuilder时引发了以下断言(脏,状态: _StreamBuilderBasState#47274): 生成函数返回null。 有问题的小部件是: StreamBuilder 构建函数不能返回null StreamBui
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)),
),
),
],
);
}
}
}),
StreamBuilder(
流:FirebaseFirestore.instance
.collection('用户')
.doc(FirebaseAuth.instance.currentUser.uid)
.collection(“项目”)
.snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)
常量文本(“加载…”);
否则{
列表项目项=[];
对于(int i=0;i
问题很明显,编译器告诉过你<代码>生成器总是需要返回一个小部件。但如果执行了条件(!snapshot.hasData)
,则代码不会执行此操作。您必须将其更改为:
if(!snapshot.hasData){
返回文本('加载…');
}
我认为,您应该在返回行之前关闭for循环(…`语句。谢谢。我已经尝试过了。我不再收到错误消息。但是,下拉列表不再处于活动状态。我无法在下拉列表中选择数据。我认为snapshot.data.docs.length
为零。只需打印该值并检查.snapshot.data.docs.length=3您的下拉列表是否显示了值?您面临的问题是什么噢