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