无法在 iOS 模拟器上使用颤振图像选择器选择图像

Posted

技术标签:

【中文标题】无法在 iOS 模拟器上使用颤振图像选择器选择图像【英文标题】:Unable to select image using flutter image picker on iOS simulator 【发布时间】:2021-05-12 04:22:34 【问题描述】:

我正在学习如何从图库中选择图像。我已经实现了同样的颤振图像选择器。但是当我尝试在模拟器中选择图像时,我无法这样做。

请帮忙

颤振医生

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.26.0-17.3.pre, on macOS 11.1 20C69 darwin-arm, locale en-IN)
[✓] android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for ios and macOS
[✓] Android Studio (version 4.1)
[✓] Connected device (1 available)

• No issues found!

我的代码

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

void main() 
  runApp(MaterialApp(
    home: Play(),
    // theme: ThemeData.dark(),
  ));


class Play extends StatefulWidget 
  @override
  _PlayState createState() => _PlayState();


class _PlayState extends State<Play> 
  File _file;

  ImagePicker _picker = ImagePicker();

  PickedFile _pickedFile;

  Future _getImageFromGallery() async 
    print("Getting Image from Gallery.");
    _pickedFile = await _picker.getImage(source: ImageSource.gallery);
    print(_pickedFile.path);
    setState(() 
      _file = File(_pickedFile.path);
    );
  

  Future _getImageFromCamera() async 
    print("Getting Image from Camera.");
    _pickedFile = await _picker.getImage(source: ImageSource.camera);
    setState(() 
      _file = File(_pickedFile.path);
    );
  

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(
        title: Text("Play"),
      ),
      body: Column(
        children: [
          Center(
            child: ElevatedButton(
                onLongPress: _getImageFromCamera,
                onPressed: _getImageFromGallery,
                child: Text("Get Image")),
          ),
          _file != null
              ? Image.file(
                  _file,
                  height: 200,
                )
              : Icon(
                  Icons.image,
                  size: 100,
                ),
        ],
      ),
    );
  


我正在使用 M1 Mac air。我已切换到 beta 频道以摆脱一些冗长的错误。 一切正常。只是,当我单击图像时,什么也没有发生。它没有被选中。

【问题讨论】:

上传图片有什么问题吗? 你有没有在你的ios/info.plist 上添加相机权限? 是的,我添加了&lt;key&gt;NSPhotoLibraryUsageDescription&lt;/key&gt; &lt;string&gt;Need to access gallery in order to get image.&lt;/string&gt; &lt;key&gt;NSCameraUsageDescription&lt;/key&gt; &lt;string&gt;Need to access camera in order to get image.&lt;/string&gt; &lt;key&gt;NSPhotoLibraryAddUsageDescription&lt;/key&gt; &lt;string&gt;Add photo liabrary description&lt;/string&gt; 相同的代码在 windows 上完美运行 我也有同样的问题。有没有找到解决办法 【参考方案1】:

我已经在我的模拟器上尝试过你的代码:

网上有讨论,包括this GitHub post,认为这可能是 Apple 的错误,没有已知的解决方法。

其实Apple Developer Forums里也有人举报这种问题。

【讨论】:

以上是关于无法在 iOS 模拟器上使用颤振图像选择器选择图像的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 图像选择器在带有 Mac M1 芯片模拟器的 ios 14 中不起作用

无法在 vscode 上运行 android 或 iOS 模拟器进行颤振

属性 android:requestLegacyExternalStorage 未找到颤振图像选择器

无法使用模拟器从 iOS 中的 ImagePicker 获取图像路径和图像?

如何从图像选择器中裁剪图像?

使用颤振将图像上传并存储到firebase