Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 弗利特(flatter)(u animarker can)&(x27);t关闭涟漪动画_Flutter_Google Maps_Animation - Fatal编程技术网

Flutter 弗利特(flatter)(u animarker can)&(x27);t关闭涟漪动画

Flutter 弗利特(flatter)(u animarker can)&(x27);t关闭涟漪动画,flutter,google-maps,animation,Flutter,Google Maps,Animation,哇,真烦人。因此,Animarker是我的谷歌地图的一个小部件父项。地图上满是标记。当用户需要从抽屉中找到一个特定的标记时,他们点击该项目&它会在相应的标记中触发涟漪效应 问题是它永远不会停止涟漪。如果用户继续点击,它甚至会尝试设置几个标记的动画 起初我很喜欢动画,但现在我正在爬墙 Animarker( isActiveTrip: rippleAnimationActive, rippleRadius: 0.5, //[0,1.0] range, how big is

哇,真烦人。因此,
Animarker
是我的谷歌地图的一个小部件父项。地图上满是标记。当用户需要从抽屉中找到一个特定的标记时,他们点击该项目&它会在相应的标记中触发涟漪效应

问题是它永远不会停止涟漪。如果用户继续点击,它甚至会尝试设置几个标记的动画

起初我很喜欢动画,但现在我正在爬墙

Animarker(
      isActiveTrip: rippleAnimationActive,
      rippleRadius: 0.5,  //[0,1.0] range, how big is the circle
      rippleColor: Colors.teal, // Color of fade ripple circle
      rippleDuration: Duration(milliseconds: 2500), //Pulse ripple duration
      markers: animatedMarkerSet,

      mapId: _mapController.future.then<int>((value) => value.mapId),
      child: GoogleMap(
      key: Key("myGoogleMap"),
      mapType: MapType.hybrid,
      initialCameraPosition: _edinburghCamera,
      markers: _markers,
      myLocationEnabled: true,
      onMapCreated: (GoogleMapController controller) {
        _mapController.complete(controller);
      },
    ),
    ),
你可以看到我创建了一个全新的标记来制作动画,并将其添加到animatedMarkerSet中。这个很好用

当用户轻触一个标记、任意标记时,有关位置的详细信息会向上滑动。我试着去激活任何有波纹的标记。然而,无论我尝试什么,它都不会停止:

    setState(() {
  rippleAnimationActive = false;
  animatedMarkerSet.clear(); // nuke from orbit
}
我还尝试将animatedMarkerSet更改为地图,并尝试使用以下方法停用ripple:

  void newLocationUpdate(LocationDetails oldLocation) {
var marker = RippleMarker(
  markerId: MarkerId(oldLocation.name),
  position: oldLocation.latLng,
  ripple: false,
);
setState(() => animatedMarkerMap[MarkerId(oldLocation.name)] = marker);
  }
但这也不行

我真的需要打开和关闭动画。我不明白为什么Animarker对
setState()
如此抗拒,让它停下来


事实上,最好的办法可能是让它运行5秒钟,然后在所有情况下关闭,但我也不知道如何做到这一点。Grrrr

好吧,我知道了。动画师是最后一个,他将获得一组动画标记。因此,一旦你把RippleMarkers的集合交给它,它就会给它们设置动画,但是你不能通过
SetState()
调用将其关闭

我试着编辑AniMarker类,使它不是最终的,所以你可以改变它的数据集,但我认为,因为它是建立在谷歌地图的Marker类上的,它们是最终的,所以它不会起作用

因此,AniMarker目前的效用有限


我的工作就是修改GoogleMaps
标记:
选项,这样我就可以通过改变标记的颜色来突出显示它。还可以更改
圆圈:
谷歌地图选项,根据用户交互动态突出显示标记。

我不清楚为什么会被否决。我不是唯一一个有这个问题的人,还有另外两个人反馈给插件开发人员。但是我的问题可能是由于缺乏洞察力造成的,所以欢迎帮助。这让人难以置信,你无法关闭ripple动画。所以你可能可以。。。。以某种方式
  void newLocationUpdate(LocationDetails oldLocation) {
var marker = RippleMarker(
  markerId: MarkerId(oldLocation.name),
  position: oldLocation.latLng,
  ripple: false,
);
setState(() => animatedMarkerMap[MarkerId(oldLocation.name)] = marker);
  }