Flutter Не удалось декодировать изображение. Предоставленное изображение должно быть растровым., Null) - PullRequest
0 голосов
/ 07 февраля 2020

Создание пользовательского значка на Google Map во флаттере показывает ошибку.

Мой pubspe c .yaml файл

assets:
  - assets/truck.png

Мой код:

void getCustomIcon() async {
    customIcon = await BitmapDescriptor.fromAssetImage(
        ImageConfiguration(
          devicePixelRatio: 2.5,
    ),
    'assets/truck.png');
}

Ошибка:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, Failed to decode image. The provided image must be a Bitmap., null)
E/flutter (15757): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (15757): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)

1 Ответ

1 голос
/ 07 февраля 2020

определить в stateclass

BitmapDescriptor customIcon ;

вызов в initState

getBytesFromAsset('assets/truck.png', 64).then((onValue) {
      customIcon =BitmapDescriptor.fromBytes(onValue);

    });

, где функция

  static Future<Uint8List> getBytesFromAsset(String path, int width) async {
    ByteData data = await rootBundle.load(path);
    ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List(), targetWidth: width);
    ui.FrameInfo fi = await codec.getNextFrame();
    return (await fi.image.toByteData(format: ui.ImageByteFormat.png)).buffer.asUint8List();
  }

, затем при создании маркера

markers.add(
            Marker(
                markerId: ....,
                position: ....,
                icon: customIcon ,
                 onTap: () { 
                  ....

                }
            )

        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...