flutter-mapbox-gl / maps

A Mapbox GL flutter package for creating custom maps
Other
1.04k stars 502 forks source link

Android exception for addImage #1046

Closed sqcsabbey closed 2 years ago

sqcsabbey commented 2 years ago

In my onMapCreated callback, I'm running:

var name = "marker";
var assetPath = "assets/map/marker.png";
final ByteData bytes = await rootBundle.load(assetPath);
final Uint8List list = bytes.buffer.asUint8List();
return await _mapboxController.addImage(name, list);

... and got (the first time I've noticed this):

E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): Failed to handle method call E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): java.lang.NullPointerException: Attempt to invoke virtual method 'void com.mapbox.mapboxsdk.maps.Style.addImage(java.lang.String, android.graphics.Bitmap, boolean)' on a null object reference E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at com.mapbox.mapboxgl.MapboxMapController.onMethodCall(MapboxMapController.java:1317) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:296) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$DartMessenger(DartMessenger.java:320) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at io.flutter.embedding.engine.dart.-$$Lambda$DartMessenger$TsixYUB5E6FpKhMtCSQVHKE89gQ.run(Unknown Source:12) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at android.os.Handler.handleCallback(Handler.java:938) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at android.os.Handler.dispatchMessage(Handler.java:99) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at android.os.Looper.loop(Looper.java:250) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at android.app.ActivityThread.main(ActivityThread.java:7868) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) E/MethodChannel#plugins.flutter.io/mapbox_maps_0(15601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958) E/DartMessenger(15601): Uncaught exception in binary message listener E/DartMessenger(15601): java.lang.IllegalStateException: Reply already submitted E/DartMessenger(15601): at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:431) E/DartMessenger(15601): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:282) E/DartMessenger(15601): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:296) E/DartMessenger(15601): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$DartMessenger(DartMessenger.java:320) E/DartMessenger(15601): at io.flutter.embedding.engine.dart.-$$Lambda$DartMessenger$TsixYUB5E6FpKhMtCSQVHKE89gQ.run(Unknown Source:12) E/DartMessenger(15601): at android.os.Handler.handleCallback(Handler.java:938) E/DartMessenger(15601): at android.os.Handler.dispatchMessage(Handler.java:99) E/DartMessenger(15601): at android.os.Looper.loop(Looper.java:250) E/DartMessenger(15601): at android.app.ActivityThread.main(ActivityThread.java:7868) E/DartMessenger(15601): at java.lang.reflect.Method.invoke(Native Method) E/DartMessenger(15601): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) E/DartMessenger(15601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958) E/flutter (15601): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: PlatformException(STYLE IS NULL, The style is null. Has onStyleLoaded() already been invoked?, null, null)

sqcsabbey commented 2 years ago

This works for me most of the time, but I'm having trouble on the first map load. I'm calling the code I included from the MapboxMap's onMapCreated callback. It looks like the error is due to the style being null, but I'm not setting my own style, so it should be a default one...

Is there anything else I could include that might point to the problem?

sqcsabbey commented 2 years ago

I moved my addImage calls to onStyleLoadedCallback and it's working.