我正在尝试在 Google 地图中实现我的自定义加载动画。
我有 3 个 HTTP 帖子(shoppingFuture
、diningFuture
、transitFuture
(,并将它们添加到名为 Future 的未来列表中
List<Future> futures = List<Future>();
futures.add(shoppingFuture);
futures.add(diningFuture);
futures.add(transitFuture);
然后我使用 for 循环创建带有Future.delayed
的animateCamera
。我进一步将它们添加到同一个期货列表中,只是为了看看动画是否有效
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
在谷歌地图中用于颤振