我试图实现我的自定义加载动画在谷歌地图的Flutter。
我有3个HTTP帖子(shoppingFuture
, diningFuture
, transitFuture
),并将它们添加到一个名为 "期货 "的未来列表中。
List<Future> futures = List<Future>();
futures.add(shoppingFuture);
futures.add(diningFuture);
futures.add(transitFuture);
然后我使用for循环来创建 animateCamera
与 Future.delayed
. 我进一步将它们添加到相同的期货列表中,只是为了看看动画是否有效。
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)));
));
}
然后,我执行 await Future.wait(futures)
用于从3个HTTP响应中获取结果
var results = await Future.wait(futures);
var shopping = results[0];
var dining = results[1];
var transit = results[2];
每次运行都要等36秒,这也是我所期望的。
所以我的问题是,是否有办法运行两个期货列表(一个用于HTTP postresponses,另一个用于 AnimateCamera
(理想情况下,它应该循环),一旦HTTP postsresponse返回或抛出错误,animateCamera就停止。
我在想 Future.doWhile
应该可以解决我的问题,但我对Dart & Flutter很陌生。
我已经通过实现VoidCallbacks实现了上面的功能。onCameraMove
, onCameraIdle
翩翩