Firebase 什么是类型';未来<;动态>';不是类型为';溪流<;动态>';
有人能告诉我如何在StreamBuilder中将函数作为流调用吗?由于类型“Future”不是类型“Stream”的子类型,因此在尝试执行此操作时,我收到了此错误。 我使用stream builder来监听对集合中特定字段值的实时更改。请让我知道我在下面的代码中哪里做错了,以及我需要做什么更改来处理这个代码段 代码如下:Firebase 什么是类型';未来<;动态>';不是类型为';溪流<;动态>';,firebase,flutter,dart,google-cloud-firestore,stream-builder,Firebase,Flutter,Dart,Google Cloud Firestore,Stream Builder,有人能告诉我如何在StreamBuilder中将函数作为流调用吗?由于类型“Future”不是类型“Stream”的子类型,因此在尝试执行此操作时,我收到了此错误。 我使用stream builder来监听对集合中特定字段值的实时更改。请让我知道我在下面的代码中哪里做错了,以及我需要做什么更改来处理这个代码段 代码如下: import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class Display extends StatefulWidget {
@override
_DisplayState createState() => _DisplayState();
}
class _DisplayState extends State<Display> {
final CollectionReference student_details =
FirebaseFirestore.instance.collection('students');
final CollectionReference tutor_details =
FirebaseFirestore.instance.collection("tutors");
final CollectionReference CollectionAttendanceDetails =
FirebaseFirestore.instance.collection('attendance');
display() async {
var tCT;
var id = await student_details
.doc("m2Hdo5eejKWfIYlD2ZJvjYepWQh2")
.get()
.then((value) {
return value.data()['tutorid'];
});
return id;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: StreamBuilder(
stream: display(),
builder: (_, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return Container(
child: Text(snapshot.data),
);
}),
));
}
}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
类显示扩展了StatefulWidget{
@凌驾
_DisplayState createState()=>\u DisplayState();
}
类_DisplayState扩展了状态{
最终收集参考学生详细信息=
FirebaseFirestore.instance.collection('students');
最终收藏参考资料=
FirebaseFirestore.instance.collection(“导师”);
最终收集参考收集参加的详细资料=
FirebaseFirestore.instance.collection('Attention');
display()异步{
var-tCT;
var id=等待学生详细信息
.doc(“m2Hdo5eejKWfIYlD2ZJvjYepWQh2”)
.get()
.然后((值){
返回值.data()['tutorid'];
});
返回id;
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
孩子:StreamBuilder(
流:display(),
构建器:(\uux,快照){
如果(!snapshot.hasData)返回CircularProgressIndicator();
返回容器(
子项:文本(snapshot.data),
);
}),
));
}
}
habro actually display()函数不是流
这将是一个在某个时间返回一个值的未来
但作为u提供的流显示()
将其转换为futurebuilder,否则firebase firestore将提供监听实时更改的功能是的,我尝试使用futurebuilder,它工作正常,但如何使用StreamBuilder满足相同的要求?FutureBuilder唯一的问题是更改只在刷新时显示。不要这样做:“stream:display(),”。您应该在initState中调用display()一次,并将其存储到状态变量中,然后在StreamBuilder中引用该状态变量。