mapbox / mapbox-maps-flutter

Interactive, thoroughly customizable maps for Flutter powered by Mapbox Maps SDK
https://www.mapbox.com/mobile-maps-sdk
Other
284 stars 117 forks source link

getStyleImage & hasStyleImage methods not responding #411

Open devmobile-vulog opened 8 months ago

devmobile-vulog commented 8 months ago

Environment

Flutter version: 3.13.0 mapbox_maps_flutter version: 1.0.0-beta.3 Device: Samsung Galaxy A53 OS: Android 14

Steps to Reproduce

Call getStyleImage(imageId) or hasStyleImage(imageId) methods from StyleManager

Expected Behavior

These two methods should return either a Future<MbxImage?> or a Future<bool>

Actual Behavior

getStyleImage(imageId) actually throw the following exception: E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): Failed to handle message E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): java.lang.IllegalStateException: Reply already submitted E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:435) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at io.flutter.plugin.common.BasicMessageChannel$IncomingMessageHandler$1.reply(BasicMessageChannel.java:224) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.mapbox.maps.pigeons.FLTMapInterfaces$StyleManager$33.success(FLTMapInterfaces.java:10964) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.mapbox.maps.pigeons.FLTMapInterfaces$StyleManager$33.success(FLTMapInterfaces.java:10961) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.mapbox.maps.mapbox_maps.StyleController.getStyleImage(StyleController.kt:487) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.mapbox.maps.pigeons.FLTMapInterfaces$StyleManager$-CC.lambda$setUp$42(FLTMapInterfaces.java:10973) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.mapbox.maps.pigeons.FLTMapInterfaces$StyleManager$$ExternalSyntheticLambda30.onMessage(Unknown Source:2) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at io.flutter.plugin.common.BasicMessageChannel$IncomingMessageHandler.onMessage(BasicMessageChannel.java:219) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at android.os.Handler.handleCallback(Handler.java:958) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at android.os.Handler.dispatchMessage(Handler.java:99) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at android.os.Looper.loopOnce(Looper.java:230) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at android.os.Looper.loop(Looper.java:319) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at android.app.ActivityThread.main(ActivityThread.java:8893) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at java.lang.reflect.Method.invoke(Native Method) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608) E/BasicMessageChannel#dev.flutter.pigeon.mapbox_maps_flutter.StyleManager.getStyleImage(13885): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) E/DartMessenger(13885): Uncaught exception in binary message listener

hasStyleImage(imageId) returns nothing

Thanks.

chris-wickens commented 8 months ago

Same issue on Pixel 6, at least for hasStyleImage. Goes into the StyleManager and never comes out, can't see what's happening.

FredKup commented 8 months ago

Facing the same issue on Android. Could someone dig into it, because it is a blocker for us.

Thanks.

chris-wickens commented 7 months ago

This issue is still present in the v1 release, and is preventing me from updating.

deandreamatias commented 6 months ago

I also have this issue on Samsung A53 5G

paulVulog commented 6 months ago

Just tested using the Mapbox V1.1.0-RC1 sample app, and everything looks good : HasStyleImage return as expected and GetStyleImage do not throw exception.

Anyone can confirm ?

Reproduced on V1.0.0 and V1.0.0-RC1


EDIT : Actually, the method works fine while using the local mapbox library code ( downloaded from here : https://github.com/mapbox/mapbox-maps-flutter/releases/tag/v1.1.0-rc.1) But if you target the version from another external application : mapbox_maps_flutter: 1.1.0-rc.1, then you still have the issue. Looks like using the latest commit from the v1.1.0-RC1 branch works fine :

  mapbox_maps_flutter:
    git:
      url: https://github.com/mapbox/mapbox-maps-flutter.git
      ref: 81a06a83bee50792dd209e6d9b74798e651e4761
chris-wickens commented 6 months ago

@paulVulog just tested on the commit you specified and hasStyleImage is working correctly again. Thanks!

paulVulog commented 6 months ago

Looks like it's correctly fixed on the official V1.1.0 release 🎉