带有FireBase和GoogleMaps的Flutter SetState

时间:2019-07-28 20:15:14

标签: flutter dart

我目前正在尝试使用动态标记构建一个代表应用程序用户的地图。每个用户都由Firebase中的文档表示,并且一切工作都很好,但有时我会收到此消息:“未处理的异常:在dispose()之后调用setState()”。


@override
  void initState() {
    super.initState();
    getMarkers(); // Here I'm building the markers
  }

// I'm retrieving the markers
void getMarkers() async {
    Firestore.instance
        .collection('map')
        .snapshots()
        .listen((data) =>
          data.documents.forEach(
                  (doc) =>
                      _addUserMarker(doc['userLatitude'], doc['userLongitude'], doc['userId'], doc['getTime']),
          )
        );
  }

// This function allows me to add the markers on the map
void _addUserMarker(latitude, longitude, userId, updateTime) {

    setState((){
      markers.add(Marker(
        markerId: MarkerId(userId),
        position: LatLng(latitude, longitude),
        infoWindow: InfoWindow(
          title: userId,
          snippet: updateTime
        ),
        icon: BitmapDescriptor.defaultMarker,
      ));
    });

  }

同样,一切都按预期进行,唯一不起作用的是删除地图上的标记:当我在Firebase中删除条目时,标记不会消失,我需要刷新页面它消失了。我认为这与我的问题有关,但我不确定。但是,当我向Firebase添加条目时,标记会立即出现在地图上,这部分已完全正常工作。

让这个“未处理的异常:在dispose()之后调用setState()”,我做错了什么?

谢谢

0 个答案:

没有答案