如何在等待Future.wait时旋转相机的方位,并在Flutter Google地图中完成后停止它



我正在尝试在 Google 地图中实现我的自定义加载动画。

我有 3 个 HTTP 帖子(shoppingFuturediningFuturetransitFuture(,并将它们添加到名为 Future 的未来列表中

List<Future> futures = List<Future>();
futures.add(shoppingFuture);
futures.add(diningFuture);
futures.add(transitFuture);

然后我使用 for 循环创建带有Future.delayedanimateCamera。我进一步将它们添加到同一个期货列表中,只是为了看看动画是否有效

for (double i = 1; i < 360; i++) {
futures.add(Future.delayed(
Duration(milliseconds: 100 * i.toInt()),() {
mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
Target: LatLng(
urbern.lat, urbern.lng),
bearing: i,
zoom: 17,
tilt: 75)));
));
}

然后我执行 awaitFuture.wait(futures)以获取 3 个 HTTP 响应的结果

var results = await Future.wait(futures);
var shopping = results[0];
var dining = results[1];
var transit = results[2];

每次运行我都必须等待 36 秒,这是意料之中的。

所以我的问题是是否有办法运行两个未来列表(一个用于 HTTP 帖子/响应,另一个用于AnimateCamera(理想情况下,它应该循环(,一旦 HTTP 帖子/响应返回或抛出错误,animateCamera 就会停止。

我想Future.doWhile应该解决我的问题,但我对Dart & Flutter很陌生

我已经通过实现 VoidCallbacksonCameraMove来实现上述内容,onCameraIdle在谷歌地图中用于颤振

最新更新