Flutter 无法显示快照中的字符串
我想从firestore获取数据并显示在文本中,但eror弹出了一个窗口。 错误说明类型“\u BroadcsastStream”不是类型“String”的子类型。 类调用该方法Flutter 无法显示快照中的字符串,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我想从firestore获取数据并显示在文本中,但eror弹出了一个窗口。 错误说明类型“\u BroadcsastStream”不是类型“String”的子类型。 类调用该方法 void main() => runApp(MaterialApp( home : profUser(), )); class profUser extends StatelessWidget { @override Widget build(BuildContext context) {
void main() => runApp(MaterialApp(
home : profUser(),
));
class profUser extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home : new profiUser(),
);
}
}
class profiUser extends StatefulWidget {
@override
_profiUserState createState() => _profiUserState();
}
class _profiUserState extends State<profiUser> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.indigo,
appBar: AppBar(
title: Text('Profile'),
actions: <Widget>[
IconButton(
icon: Icon(choices[1].icon),
onPressed: (){
logOut();
Navigator.push(context,MaterialPageRoute(builder: (context)
=> myLogin()));
},
),
],
),
body: Column(
children: <Widget>[
userDetail(),
],
),
);
}
}
void main()=>runApp(MaterialApp(
主页:profUser(),
));
类profUser扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
主页:新用户(),
);
}
}
类profiUser扩展StatefulWidget{
@凌驾
_profiUserState createState();
}
类_profiUserState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.indigo,
appBar:appBar(
标题:文本(“概要文件”),
行动:[
图标按钮(
图标:图标(选项[1]。图标),
已按下:(){
注销();
Navigator.push(上下文,MaterialPage路由(生成器:(上下文)
=>myLogin());
},
),
],
),
正文:专栏(
儿童:[
userDetail(),
],
),
);
}
}
类以基于firestore中的数据显示文本
class userDetail extends StatelessWidget{
@override
Widget build(BuildContext context){
return new StreamBuilder(
stream: UniQuery().getUserDetail(),
builder: (BuildContext context, snapshot){
if(!snapshot.hasData)
return new Text('Loading..... Please wait');
var userDocument = snapshot.data;
return new Column(
children: <Widget>[
Text('Name: ' + userDocument['name']),
Text('Age: ' + userDocument['age'],toString()),
Text('Address: ' + userDocument['address']),
Text('Result: ' + userDocument['result']),
],
);
}
);
}
}
var userID;
Future<String> getCurrentUser() async{
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
// return uID != null ? uID : null;
final String uID = user.uid.toString();
return uID;
}
setUserDetail() async{
userID = await getCurrentUser();
}
类userDetail扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新的StreamBuilder(
流:UniQuery().getUserDetail(),
生成器:(BuildContext上下文,快照){
如果(!snapshot.hasData)
返回新文本(“正在加载…”请稍候);
var userDocument=snapshot.data;
返回新列(
儿童:[
Text('Name:'+userDocument['Name']),
Text('Age:'+userDocument['Age'],toString()),
Text('Address:'+userDocument['Address']),
Text('Result:'+userDocument['Result']),
],
);
}
);
}
}
下面是在上述代码中用于从firestore获取数据的空格
class userDetail extends StatelessWidget{
@override
Widget build(BuildContext context){
return new StreamBuilder(
stream: UniQuery().getUserDetail(),
builder: (BuildContext context, snapshot){
if(!snapshot.hasData)
return new Text('Loading..... Please wait');
var userDocument = snapshot.data;
return new Column(
children: <Widget>[
Text('Name: ' + userDocument['name']),
Text('Age: ' + userDocument['age'],toString()),
Text('Address: ' + userDocument['address']),
Text('Result: ' + userDocument['result']),
],
);
}
);
}
}
var userID;
Future<String> getCurrentUser() async{
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
// return uID != null ? uID : null;
final String uID = user.uid.toString();
return uID;
}
setUserDetail() async{
userID = await getCurrentUser();
}
var用户id;
未来getCurrentUser()异步{
final FirebaseUser user=等待FirebaseAuth.instance.currentUser();
//返回uID!=null?uID:null;
最后一个字符串uID=user.uID.toString();
返回uID;
}
setUserDetail()异步{
userID=等待getCurrentUser();
}
问题出在getUserDetail()中,您正在向documents()传递一个异步函数,以便该函数返回未来。在调用documents()之前,应该首先获取字符串,等待异步调用完成,然后将字符串传递给documents() 你在其他字段上也更改了吗?姓名、年龄、地址、成绩?是的,我都有。我还尝试注释其他字段,只留下名称。但是仍然说类型“\u BroadcsastStream”不是类型“String”的子类型。在控制台中,您是否检查了哪行代码是错误?类型“\u BroadcastStream”不是导致错误的小部件was:列的用户创建的“字符串”类型的子类型file:///D:/Compile/ttpproject/lib/profileUser.dart:45:13Try 重新安装/重新启动应用程序,不要使用热重新加载。