未处理的异常:错误状态:在使用flutter\u google\u places调用close后无法添加新事件

未处理的异常:错误状态:在使用flutter\u google\u places调用close后无法添加新事件,flutter,dart,google-api,google-places-api,googleplacesautocomplete,Flutter,Dart,Google Api,Google Places Api,Googleplacesautocomplete,每次使用PlacesAutoComplete小部件时,我都会遇到这个错误。搜索/请求/响应一切正常,没有崩溃或任何事情。但是日志在每次搜索时都会显示这个错误 我为它添加了两个软件包:flatter_google_places和google_web_services 而且我根本不使用流。所以这对我来说是一个非常奇怪的错误 为此,我遵循了一些在线指南,谁能解释一下我做错了什么 另外,我发现这是实现places autocomplete的一种非常基本的方法。我希望你能给我一个更好的方式来实现谷歌搜索的

每次使用PlacesAutoComplete小部件时,我都会遇到这个错误。搜索/请求/响应一切正常,没有崩溃或任何事情。但是日志在每次搜索时都会显示这个错误

我为它添加了两个软件包:flatter_google_places和google_web_services

而且我根本不使用流。所以这对我来说是一个非常奇怪的错误

为此,我遵循了一些在线指南,谁能解释一下我做错了什么

另外,我发现这是实现places autocomplete的一种非常基本的方法。我希望你能给我一个更好的方式来实现谷歌搜索的建议

Future\u使用placeSautoComplete()异步搜索{
预测_预测=等待地点完成.show(
上下文:上下文,
apiKey:GOOGLE_API_密钥,
onError:(响应)=>\u淋浴ROR(响应),
mode:mode.overlay,
语言:“恩”,
组成部分:[组成部分(Component.country,“uk”)],
位置:_当前位置,
半径:50,
);
如果(_预测!=null){
位置细节响应细节=
等待谷歌地图(apiKey:GOOGLE\u API\u KEY)
.getDetailsByPlaceId(_.placeId);
最终lat=详图.result.geometry.location.lat;
最终液化天然气=详图.结果.几何形状.位置.液化天然气;
设置状态(){
_标记位置=新车床(车床,lng);
});
mapController.animateCamera(
CameraUpdate.newCameraPosition(
摄像定位(
目标:_标记位置,
缩放:16.0,
),
),
);
}
}

这是一个插件错误,他们已经在git代码中修复了该错误。不幸的是,目前的版本还没有更新

您可以做的是将所有src文件集成到它们的github lib文件夹中。它为我解决了这个问题

具体步骤如下:

[1] 去 [2] 将所有dart文件复制到我的项目中


StreamController subject=StreamController.broadcast()谢谢,至少它澄清了这不是我的错误欢迎来到StackOverflow。虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
Future<void> _searchWithPlacesAutoComplete() async {
    Prediction _predictions = await PlacesAutocomplete.show(
      context: context,
      apiKey: GOOGLE_API_KEY,
      onError: (response) => _showError(response),
      mode: Mode.overlay,
      language: "en",
      components: [Component(Component.country, "uk")],
      location: _currentLocation,
      radius: 50,
    );

    if (_predictions != null) {
      PlacesDetailsResponse detail =
          await GoogleMapsPlaces(apiKey: GOOGLE_API_KEY)
              .getDetailsByPlaceId(_predictions.placeId);
      final lat = detail.result.geometry.location.lat;
      final lng = detail.result.geometry.location.lng;

      setState(() {
        _markedPosition = new LatLng(lat, lng);
      });
      mapController.animateCamera(
        CameraUpdate.newCameraPosition(
          CameraPosition(
            target: _markedPosition,
            zoom: 16.0,
          ),
        ),
      );
    }
  }