我正在尝试使用StreamBuilder返回位置值,但是我没有成功。在调试中,他甚至没有运行生成器。我找不到问题。
在这里我创建StreamBuilder来带来位置
_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']),
答案 0 :(得分:1)
我认为您误解了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),