Flutter 如何解决真实设备上带有颤振的摄像头和存储文件权限

Flutter 如何解决真实设备上带有颤振的摄像头和存储文件权限,flutter,permissions,camera,storage,dart-html,Flutter,Permissions,Camera,Storage,Dart Html,我有这段代码,它在emulator上工作,但在真实设备上,服务器返回错误500,因为真实设备不向服务器发送相机图像文件 摄像机拍摄并加载到设备上的图像通常在eMeagulator和真实设备上都可以看到,但无法从真实设备发送。 这是拍摄图像的代码 List<File> takenImagesList = <File>[]; // ignore: missing_return Future<File> getImageToList() async {

我有这段代码,它在emulator上工作,但在真实设备上,服务器返回错误500,因为真实设备不向服务器发送相机图像文件 摄像机拍摄并加载到设备上的图像通常在eMeagulator和真实设备上都可以看到,但无法从真实设备发送。 这是拍摄图像的代码

 List<File> takenImagesList = <File>[];

  // ignore: missing_return
  Future<File> getImageToList() async {
    // ignore: deprecated_member_use
    final oneImage = await ImagePicker.pickImage(source: ImageSource.camera);
    setState(() {
      // ignore: unrelated_type_equality_checks
      if (oneImage == null || oneImage == "null") {
      } else
        takenImagesList.add(oneImage);
    });
  }
正如你看到的,它是工作的,但问题是在真正的设备上,它不工作,这是日志

I/flutter (10667): request.files.length=>3
I/flutter (10667): headers=>{Accept: application/json, Cookie: lang=ar, Content-Type: multipart/form-data, Authorization: Bearer eyJ0eXAiO*****
I/flutter (10667): request.files=>[Instance of 'MultipartFile', Instance of 'MultipartFile', Instance of 'MultipartFile']
I/flutter (10667): response.statusCode 500
I/flutter (10667): response.reasonPhrase :=> Internal Server Error
I/flutter (10667): Internal Server Error
I/flutter (10667): stut=null

我认为当你得到500,它实际上崩溃了,所以你需要做一些类似的事情

try {
      var response = await http...;
      if (response.statusCode == 200)
        ...
    } catch(e,s){
//do sth
    }

或者你可以一个错误接一个错误

SocketException上的
{
..

添加此行

android:name="android.permission.QUERY_ALL_PACKAGES"/>

到android>清单文件。

您能解释更多吗?错误:try块后面必须跟一个“on”、“catch”或“finally”子句。(在[plast]lib\Api\MakeNewOrderApi.dart:114处缺少\u catch\u或\u finally)@Husamuldeen您可以在这里查看以了解异常处理在搜索后我发现真实设备没有上载文件,我认为这是权限原因,那么您知道如何添加摄像头和存储权限吗?我已经这样做了,现在仍然一样,我更改了``final oneImage=wait ImagePicker.pickImage(source:ImageSource.camera);`to gallary``final oneImage=wait ImagePicker.pickImage(source:ImageSource.gallary)```
try {
      var response = await http...;
      if (response.statusCode == 200)
        ...
    } catch(e,s){
//do sth
    }

android:name="android.permission.QUERY_ALL_PACKAGES"/>