首页 > 解决方案 > 在 iOS 的颤振应用程序中选择图像时出错

问题描述

我在颤振应用程序中有两个图像按钮来从图库中选择图像,当我按下任何 ImageButton 并尝试选择它成功选择的图像时。之后,当我尝试使用其他图像按钮来选择另一个图像时,应用程序在 iOS 中崩溃了

每次为获取图像而进行不同的调用时选择图像。

以下是每次调用的方法

Future getImage2() async {
    print("get image");

    PickedFile image = await _picker2.getImage(source: ImageSource.gallery);

   // File image = await ImagePicker.pickImage(source: ImageSource.gallery);
    if (image != null) {
      setState(() {
        final File file = File(image.path);
        avatarImageFile2 = file;
        isLoading2 = true;
        

      });
    }
  }


Future getImage1() async {
    print("get image");

    PickedFile image = await _picker1.getImage(source: ImageSource.gallery);

   // File image = await ImagePicker.pickImage(source: ImageSource.gallery);
    if (image != null) {
      setState(() {
        final File file = File(image.path);
        avatarImageFile1 = file;
        isLoading1 = true;
       

      });
    }
  }

请指导我应该如何解决它

标签: iosflutterdartimagepicker

解决方案


如果您没有添加权限,则将以下键添加到位于 /ios/Runner/Info.plist 中的 Info.plist 文件中:

NSPhotoLibraryUsageDescription - 描述为什么你的应用需要照片库的权限。这在可视化编辑器中称为隐私 - 照片库使用说明。

NSCameraUsageDescription - 描述为什么您的应用需要访问相机。这在可视化编辑器中称为隐私 - 相机使用说明。

NSMicrophoneUsageDescription - 如果您打算录制视频,请描述您的应用需要访问麦克风的原因。这在可视化编辑器中称为隐私 - 麦克风使用说明。

如果您已添加此代码,请尝试此代码。

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart'; 

 void main() => runApp(MyApp()); 



class MyApp extends StatelessWidget { 
@override 
Widget build(BuildContext context) {
 return MaterialApp( home: MyHomePage(), 
    ); 
   }
 }


 class MyHomePage extends StatefulWidget { @override
 _MyHomePageState createState() =>
_MyHomePageState();
 } 


class _MyHomePageState extends State<MyHomePage> {

 File _image; final picker = ImagePicker(); 

Future getImage() async { 
final pickedFile = await picker.getImage(source: ImageSource.camera);

 setState(() {
 if (pickedFile != null) {
 _image = File(pickedFile.path); 
} else {

 print('No image selected.');
 }
 }); 
} @override
 Widget build(BuildContext context) { 

return Scaffold(
 appBar: AppBar( 

title: Text('Image Picker Example'),

 ),

 body: Center( child: _image == null ? Text('No image selected.') : Image.file(_image), 

), 

floatingActionButton: FloatingActionButton( onPressed: getImage,

 tooltip: 'Pick Image',
 child: Icon(Icons.add_a_photo),
 
        ),
      ); 
    }
  }

推荐阅读