Firebase 吸气剂';文件';在显示null时调用了一段时间
我正在尝试从appBar上的firebase检索用户名。它成功地检索到它。但在成功显示用户名之前,它会在屏幕上显示错误数秒。操作系统的错误 I/flatter(24143):在建筑中抛出以下NoSuchMethodError StreamBuilder(脏,状态: I/颤振(24143):_StreamBuilderBaseState#c10cf): I/flatter(24143):对null调用getter“documents” I/颤振(24143):接收器:空 I/flatter(24143):尝试调用:文档Firebase 吸气剂';文件';在显示null时调用了一段时间,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在尝试从appBar上的firebase检索用户名。它成功地检索到它。但在成功显示用户名之前,它会在屏幕上显示错误数秒。操作系统的错误 I/flatter(24143):在建筑中抛出以下NoSuchMethodError StreamBuilder(脏,状态: I/颤振(24143):_StreamBuilderBaseState#c10cf): I/flatter(24143):对null调用getter“documents” I/颤振(24143):接收器:空 I/flatter(241
类数据{
小部件构建(构建上下文){
SystemChrome.setPreferredOrientations([
DeviceOrientation.Up,
]);
CurrentUser\u CurrentUser=Provider.of(上下文,侦听:false);
返回脚手架(
背景颜色:颜色。灰色[600],
resizeToAvoidBottomPadding:false,
appBar:appBar(
标题:文本(“属性主机”),
标题:对,
行动:[
扩大(
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceAround,
儿童:[
容器(
页边距:仅限新边集(左:50),
子项:文本('Property Host',样式:TextStyle(fontWeight:fontWeight.bold,fontSize:19)),
StreamBuilder(流:Firestore.instance.collection('users')。其中(“uid”,isEqualTo:userid)。快照(),
//忽略:缺少返回
生成器:(BuildContext上下文,异步快照){
如果(snapshot.data==null)
循环前进指示器();
//最终用户文档=snapshot.data;
//最终标题=snapshot.data.userocument['displayName'];
//循环前进指示器();
扩大回报(
子项:ListView.builder(
itemCount:snapshot.data.documents.length,
//忽略:缺少返回
itemBuilder:(构建上下文,int索引){
打印(user.uid);
返回用户!=null
?容器(
页边距:仅限边集(顶部:17,左侧:40),
子:文本(
snapshot.data.documents.elementAt(索引)['displayName']),在,
)
:图标按钮(
图标:图标(Icons.person),
//忽略:缺少返回
已按下:(){
pushNamed(上下文“/LoginScreen”);
},
);
}
),
);
}
使用snapshot.hasData确保在检索数据后构建主窗口小部件(已展开),并在返回数据之前使用CircularRogesIndicator保持其位置
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData){
return Expanded(
child: ListView.builder(
itemCount: snapshot.data.documents.length,
// ignore: missing_return
itemBuilder: (BuildContext context, int index) {
print(user.uid);
return user != null
? Container(
margin: EdgeInsets.only(top: 17, left: 40),
child: Text(
snapshot.data.documents.elementAt(index)['displayName']),
)
: IconButton(
icon: Icon(Icons.person),
// ignore: missing_return
onPressed: () {
Navigator.pushNamed(context, '/LoginScreen');
},
);
}
),
);
}
else {
return CircularProgressIndicator();
}
}
builder:(构建上下文,异步快照){
if(snapshot.hasData){
扩大回报(
子项:ListView.builder(
itemCount:snapshot.data.documents.length,
//忽略:缺少返回
itemBuilder:(构建上下文,int索引){
打印(user.uid);
返回用户!=null
?容器(
页边距:仅限边集(顶部:17,左侧:40),
子:文本(
snapshot.data.documents.elementAt(索引)['displayName']),在,
)
:图标按钮(
图标:图标(Icons.person),
//忽略:缺少返回
已按下:(){
pushNamed(上下文“/LoginScreen”);
},
);
}
),
);
}
否则{
返回循环ProgressIndicator();
}
}
您忘记了在CircularProgressIndicator()之前返回;
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData){
return Expanded(
child: ListView.builder(
itemCount: snapshot.data.documents.length,
// ignore: missing_return
itemBuilder: (BuildContext context, int index) {
print(user.uid);
return user != null
? Container(
margin: EdgeInsets.only(top: 17, left: 40),
child: Text(
snapshot.data.documents.elementAt(index)['displayName']),
)
: IconButton(
icon: Icon(Icons.person),
// ignore: missing_return
onPressed: () {
Navigator.pushNamed(context, '/LoginScreen');
},
);
}
),
);
}
else {
return CircularProgressIndicator();
}
}