hnvn / flutter_image_cropper

A Flutter plugin for Android and iOS supports cropping images
971 stars 374 forks source link

Fixed crash Flutter 1.12 and retrieveLostData feature. #111

Closed hsangtini closed 4 years ago

hsangtini commented 4 years ago

This fix about lost of pendingResult. Then I follow struct of image_picker plugin to fix by make cache if pendingResult lost.

hnvn commented 4 years ago

Sorry @hsangtini , I miss your PR. Can you explain your codes? Why do you need ImageCropperCache class? What changes in Flutter 1.12 leading to this bug?

hsangtini commented 4 years ago

Sorry @hsangtini , I miss your PR. Can you explain your codes? Why do you need ImageCropperCache class? What changes in Flutter 1.12 leading to this bug?

Hi there. I got error about lost of pendingResult on Flutter 1.12 and Android 10 (Samsung S10+):

    Process: com.example.client, PID: 15776
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=69, result=-1, data=Intent { (has extras) }} to activity {com.example.client/com.example.client.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.MethodChannel$Result.success(java.lang.Object)' on a null object reference
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5096)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5137)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2146)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7762)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)
     Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.MethodChannel$Result.success(java.lang.Object)' on a null object reference
        at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.finishWithSuccess(ImageCropperDelegate.java:110)
        at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.onActivityResult(ImageCropperDelegate.java:94)
        at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:634)
        at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:367)
        at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:546)
        at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:594)
        at android.app.Activity.dispatchActivityResult(Activity.java:8318)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5089)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5137) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2146) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7762) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047) 

Then i follow struct of image_picker plugin to fix by make cache if pendingResult lost.

Sorry about my english, it not really good.

wangbo4020 commented 4 years ago

same as you

ekil1100 commented 4 years ago

@hnvn Please merge this pull request, I have the same problem, and my app is waiting to launch.

hnvn commented 4 years ago

I am still working on it, I need to find out what is the real problem

amorenew commented 4 years ago

I got the same error

12-18 00:24:11.887 31635-31635/com.example.testwebsite E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.testwebsite, PID: 31635 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=69, result=-1, data=Intent { (has extras) }} to activity {com.example.testwebsite/com.example.testwebsite.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.MethodChannel$Result.success(java.lang.Object)' on a null object reference at android.app.ActivityThread.deliverResults(ActivityThread.java:3856) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3899) at android.app.ActivityThread.access$1200(ActivityThread.java:183) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5667) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:962) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.MethodChannel$Result.success(java.lang.Object)' on a null object reference at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.finishWithSuccess(ImageCropperDelegate.java:110) at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.onActivityResult(ImageCropperDelegate.java:94) at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:634) at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:367) at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:546) at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:594) at android.app.Activity.dispatchActivityResult(Activity.java:6364) at android.app.ActivityThread.deliverResults(ActivityThread.java:3852) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3899)  at android.app.ActivityThread.access$1200(ActivityThread.java:183)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)  at android.os.Handler.dispatchMessage(Handler.java:111)  at android.os.Looper.loop(Looper.java:194)  at android.app.ActivityThread.main(ActivityThread.java:5667)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:962)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 

hnvn commented 4 years ago

Thanks for your contribution but it seems that it doesn't solve the real problem. I will close it and welcome other contributions.