未处理的异常:错误状态:调用关闭后无法添加新事件,使用 fluttter_google_places

Unhandled Exception: Bad state: Cannot add new events after calling close, on using fluttter_google_places

我每次使用 PlacesAutoComplete 小部件时都会遇到此错误。 Search/request/response 一切正常,没有崩溃或任何问题。但是日志在每次搜索时都会向我显示此错误。

我为它添加了两个包:flutter_google_places 和 google_web_services。

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

为此我遵循了几个在线指南,任何人都可以解释我做错了什么吗?

此外,我发现这是实现地点自动完成的一种非常基本的方法。我希望您能提供有关更好地实施 google 地点搜索的建议。

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,
          ),
        ),
      );
    }
  }

这是他们已在 git 代码中修复的插件错误。不幸的是,它还没有更新到他们当前的版本。

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

具体步骤:

[1] 转到 https://github.com/fluttercommunity/flutter_google_places/tree/master/lib/src [2] 将所有 dart 文件复制到我的项目中

  StreamController<dynamic> subject = StreamController<dynamic>.broadcast();