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

问题描述 投票:0回答:1

我试图实现我的自定义加载动画在谷歌地图的Flutter。

我有3个HTTP帖子(shoppingFuture, diningFuture, transitFuture),并将它们添加到一个名为 "期货 "的未来列表中。

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

然后我使用for循环来创建 animateCameraFuture.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很陌生。

google-maps flutter async-await future
1个回答
0
投票

我已经通过实现VoidCallbacks实现了上面的功能。onCameraMove, onCameraIdle 翩翩

© www.soinside.com 2019 - 2024. All rights reserved.