如何解决Flutter Image_Picker 不会从图库中选择图片并返回应用
Here is a what's happening : 我正在尝试将图库中的图像上传到我在 iOS 模拟器上的应用程序。图像选择器打开图库但无法选择图像并返回应用程序。这是我的简单代码:
File _image;
final picker = ImagePicker();
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
和我的小部件:
body: Center(
child: _image != null ? Image.file(_image) : Text('no Image'),),
先谢谢大家
解决方法
File _image;
String _image1 = "";
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
if (pickedFile != null) {
_image1 = pickedFile.path;
_image = File(pickedFile.path);
print(json.encode(_image1));
print("file path...");
} else {
print('No image selected.');
}
});
}
,
对于 iOS,如 documentation 中所述,您需要在本机端进行一些与权限相关的配置:
将以下键添加到位于 /ios/Runner/Info.plist 的 Info.plist 文件中:
- NSPhotoLibraryUsageDescription - 描述您的应用为何需要照片库权限。这在可视化编辑器中称为隐私 - 照片库使用说明。
- NSCameraUsageDescription - 描述您的应用为何需要访问相机。这在可视化编辑器中称为隐私 - 相机使用说明。
- NSMicrophoneUsageDescription - 如果您打算录制视频,请描述您的应用为何需要访问麦克风。这在可视化编辑器中称为隐私 - 麦克风使用说明。
除此之外,它应该可以与您的代码完美配合。图像应该适合这样的 Flexible
或 SizedBox 以避免溢出:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
void main() {
runApp(MaterialApp(
home: SampleScreen(),));
}
class SampleScreen extends StatefulWidget {
@override
_SampleScreenState createState() => _SampleScreenState();
}
class _SampleScreenState extends State<SampleScreen> {
File _image;
final picker = ImagePicker();
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,children: [
FlatButton(onPressed: () => getImage(),child: Text('Press me')),Flexible(child: _image != null ? Image.file(_image) : Text('no Image')),],),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。