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