【问题标题】:Getting error in Image picking in flutter application for iOS在 iOS 的颤振应用程序中选择图像时出错
【发布时间】:2020-11-15 07:21:49
【问题描述】:
我在颤振应用程序中有两个图像按钮来从图库中选择图像,当我按下任何 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;
});
}
}
请指导我应该如何解决它
【问题讨论】:
标签:
ios
flutter
dart
imagepicker
【解决方案1】:
如果你没有添加权限,那么
将以下键添加到位于 /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),
),
);
}
}