Flutter 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)

我正在尝试返回位置值​​使用StreamBuilder,但我没有成功。在debug中,他甚至不运行构建器。我找不到问题

在这里,我创建了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']),

我想你误解了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()的第一种方法是工作。