ios - 在 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;
});
}
}
请指导我应该如何解决它
解决方案
如果您没有添加权限,则将以下键添加到位于 /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),
),
);
}
}
推荐阅读
- javascript - 如何按日期范围过滤日期数组?
- javascript - 用于用户名验证的 JavaScript 正则表达式
- android - Android:获取 ISO 639 alpha-2 代码中的用户语言(en、pt、jp...)
- java - jSerialComm SerialPort.getCommPorts() 抛出 java.lang.ExceptionInInitializerError
- tensorflow - 在 Tensorflow 中一次使用多个最小化操作会按预期工作吗?
- python - Python 否则无法正常工作
- linux - 如何让 grep 搜索我放入变量中的任何数字?
- swift - XCTestCase - 如何在包含字符串的 NSTextView 上断言?
- c++ - C++11 使用不同类型的随机分布共享相同的函数
- c++ - 如何将 C++ 输出捕获到 Bash 变量?