Flutter StreamBuilder未返回任何值-颤振
我正在尝试返回位置值使用StreamBuilder,但我没有成功。在debug中,他甚至不运行构建器。我找不到问题 在这里,我创建了StreamBuilder,以提供位置信息Flutter StreamBuilder未返回任何值-颤振,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我正在尝试返回位置值使用StreamBuilder,但我没有成功。在debug中,他甚至不运行构建器。我找不到问题 在这里,我创建了StreamBuilder,以提供位置信息 _newMoveToApoio(String uidProp) { StreamBuilder( stream: Firestore.instance .collection('tracker') .document(uidProp)
_newMoveToApoio(String uidProp) {
StreamBuilder(
stream: Firestore.instance
.collection('tracker')
.document(uidProp)
.snapshots(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return new Center(
child: CircularProgressIndicator(),
);
} else {
var trackerDocument = snapshot.data;
double latitude = trackerDocument['latitude'];
double longitude = trackerDocument['longitude'];
_controller.animateCamera(CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(latitude, longitude), zoom: 18.0)));
setState(() {
_markers.add(
Marker(
draggable: false,
markerId: MarkerId("1"),
position: LatLng(latitude, longitude),
infoWindow: InfoWindow(
title: "João Marcelo", snippet: "Sua Localização Atual"),
icon: _markerIconApoio,
),
);
});
}
});
}
在这里,我在底部表单中进行调用,传递“uid”
onTap: () => _newMoveToApoio(snapshot.data[index].data['uidProp']),
我想你误解了StreamBuilder的用途。它是在小部件树中使用的小部件。但是您可以从一个只执行函数的
onTap
调用它。您可能想要更像这样的东西:
_newMoveToApoio(String uidProp) async {
var snapshot = await Firestore.instance
.collection('tracker')
.document(uidProp)
.get();
// do your business logic here
}
编辑:要在树中使用StreamBuilder
,首先返回它:
Widget _newMoveToApoio(String uidProp) {
return StreamBuilder(
// the rest of the function
然后在构建方法中:
RandomWidget(
child: _newMoveToApoio(uidProp),
你的回答是对的!只是我现在开始学习颤振,我仍然有疑问。现在,我如何从firestore获得实时响应?我已经为此使用了StreamBuilder。我认为您的代码是正确的。您可以使用
快照()
获得更新。只需将return
添加到StreamBuilder
之前,并将\u newMoveToApoio(uidProp)
添加到小部件树中所需的位置。抱歉,我无法理解。你能给我举个例子吗?我试着像你说的那样使用StreamBuilder,但是没有用。。。使用get()的第一种方法是工作。