Flutter / Dart Google Maps перерисовывает виджет после обновления mapcontroller - PullRequest
0 голосов
/ 16 января 2019

Как сделать так, чтобы виджет Google Map повторно отображался при изменениях, внесенных контроллерами карты?

@override
  Widget build(BuildContext context) {
    return GoogleMap(
      onMapCreated: _onMapCreated,
      options: GoogleMapOptions(
        compassEnabled: true,
        cameraPosition: CameraPosition(
          target: LatLng(-36.8446085, 174.7547239),
          zoom: 15.0,
        ),
      ),
    );
  }

Метод обновляется с помощью контроллера карты, чтобы добавить маркер и анимировать масштабирование в соответствии с текущим местоположением пользователя. Этот метод запускается FAB, вызывающим StreamController в родительском виджете этого виджета рендеринга карты Google.

void _populateUserLocation() {
    _getLocation().then((location) {
      setState(() {
        userLocation = LatLng(location['latitude'], location['longitude']);
      });
    });
    _mapController.addMarker(
      MarkerOptions(
        position: userLocation,
        infoWindowText: InfoWindowText("!", "Your are here"),
      )
    );
    _mapController.animateCamera(
      CameraUpdate.newCameraPosition(
        CameraPosition(
          target: userLocation,
          tilt: 50.0,
          zoom: 20.0,
        )
      )
    );
  }

В настоящее время это работает, как и предполагалось, только на втором нажатии FAB. Это означает, что карта не отображается соответствующим образом с изменениями, внесенными контроллером карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...