首页 > 解决方案 > 致命异常:主进程:com.flutter_image,PID:32038 kotlin.KotlinNullPointerException

问题描述

压缩图像后按下按钮时出现此错误并且应用程序崩溃请帮助我提前谢谢这是我的代码

 onPressed: () async {
    print('Selected Item = '+'$radioItemHolder');
    if (radioItemHolder.contains('High')) {
     print('High');
     for (int i = 0;i < widget.image.length;i++) {
       var path = await FlutterAbsolutePath.getAbsolutePath(
         widget.image[i].identifier);
    print("path");
    print(path);
    File compressedFile =await FlutterNativeImage.compressImage(path, quality: 
    90);
    images.add(compressedFile);                                         
    GallerySaver.saveImage(compressedFile.path, albumName: 'Image Resizer')
     .then((bool success) {
        Fluttertoast.showToast(msg: "Image saved to gallary",toastLength: 
          Toast.LENGTH_SHORT,
          gravity: ToastGravity.BOTTOM,
          timeInSecForIosWeb: 5,
          backgroundColor: Colors.red,
          textColor: Colors.white,
          fontSize: 16.0);
     });
    
    }
    Navigator.push(context,
    MaterialPageRoute(builder: (context) => Share_Convert_Iamge(image: 
    images)),
  );
}}

标签: flutterdart

解决方案


首先,下载这个包: https ://pub.dev/packages/common_utils

然后尝试强制等待压缩完成,然后再运行导航逻辑。只需这样做:

            import 'package:common_utils/common_utils.dart';
         
       ///.........
        Future runImageCompressionLogic() async {
            for (int i = 0;i < widget.image.length;i++) {
                         
              var path = await FlutterAbsolutePath.getAbsolutePath(
                         widget.image[i].identifier);
                    print("path");
                    print(path);
                    await FlutterNativeImage.compressImage(path, quality: 
                    90).then((compressedFile) {
                        
                    if (!TextUtil.isEmpty(compressedFile)) {
                         images.add(compressedFile);                                         
                         GallerySaver.saveImage(compressedFile.path, 
                      albumName: 'Image Resizer')
                     .then((bool success) {
                        Fluttertoast.showToast(msg: "Image saved to 
                          gallary",toastLength: 
                          Toast.LENGTH_SHORT,
                          gravity: ToastGravity.BOTTOM,
                          timeInSecForIosWeb: 5,
                          backgroundColor: Colors.red,
                          textColor: Colors.white,
                          fontSize: 16.0);
                         });
                     });
                      }     
                     }   
                   }
               }
            
            ///.....
            
               onPressed: () async {
                    print('Selected Item = '+'$radioItemHolder');
                    if (radioItemHolder.contains('High')) {
                     print('High');
                    
                     runImageCompressionLogic().whenComplete((){
            
                         Navigator.push(context,
                            MaterialPageRoute(builder: (context) => 
                              Share_Convert_Iamge(image: 
                            images)),
                         }); 
                     );
                   }}

推荐阅读