【问题标题】:Flutter: BitmapDescriptor.fromAsset deprecatedFlutter:不推荐使用 BitmapDescriptor.fromAsset
【发布时间】:2020-02-22 02:48:21
【问题描述】:

我是 Flutter 的新手,我的应用程序中有这段代码,非常适合用数千个项目填充标记列表,每个项目都是本地存储为 png 文件的 4 个可用图标之一:

        for (var bla in jData) {
          LatLng _markerPos =
            LatLng(
              double.parse(bla['lat']),
              double.parse(bla['lng'])
            );
          String _iconImage = 'assets/images/' + bla['q'].toString() + '.png';
          markers.add(Marker(
            position: _markerPos,
            markerId: MarkerId(bla['hash']),
            icon: BitmapDescriptor.fromAsset(_iconImage)
          ));
        }

但现在 fromAsset 方法已被弃用,分配 BitmapDescriptor 的新方法似乎是通过引发错误的 Future 函数*(在我看来,这也很麻烦这可以很容易地用旧方法完成)。

那么任何人都可以帮助我使用新方法 fromAssetImage 实现这一目标吗?在 for 循环中分配 Future 对我来说似乎很奇怪,但我是菜鸟。

这是我在使用新方法时遇到的错误*:无法将参数类型“Future”分配给参数类型“BitmapDescriptor”。 (argument_type_not_assignable 在 [flutter_app] lib/lash.dart:81)

【问题讨论】:

    标签: flutter dart google-maps-markers deprecated google-maps-flutter


    【解决方案1】:

    是的,fromAsset 方法是同步调用获取Bitmap 对象,但现在已经被fromAssetImage 异步方法取代,我猜是因为响应性和性能相关的问题。

    虽然它看起来对您来说是一个新主题,但使用asynchronous programming 应该很容易让您的代码工作,您只需将您的循环标记为async,然后将await 标记为@ 987654327@ 对象在您的标记中使用之前返回。像这样的东西应该可以工作,虽然我还没有尝试过。

             for (var bla in jData) async {
              LatLng _markerPos =
                LatLng(
                  double.parse(bla['lat']),
                  double.parse(bla['lng'])
                );
              String _iconImage = 'assets/images/' + bla['q'].toString() + '.png';
              final bitmapIcon = await BitmapDescriptor.fromAsset(_iconImage);
              markers.add(Marker(
                position: _markerPos,
                markerId: MarkerId(bla['hash']),
                icon: bitmapIcon
              ));
            }
    

    【讨论】:

    • 谢谢伙计!这确实很有意义,我将更深入地了解异步函数!
    • 答案还是用fromAsset,而不是fromAssetImage...
    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2021-01-19
    • 2016-04-22
    • 2012-11-14
    • 2021-06-29
    • 2019-11-08
    相关资源
    最近更新 更多