flutter - Flutter:未处理的异常:FileSystemException:创建失败,路径='目录:''(操作系统错误:只读文件系统,errno = 30)
问题描述
我已经在谷歌搜索并且我发现的解决方案正在使用path_provider
,添加权限,AndroidManifest.xml
是的,我已经尝试过了。但我的仍然有错误。
这是我的功能
Future<File> _takePicture() async {
Directory root = await getTemporaryDirectory(); // this is using path_provider
String directoryPath = '$root/bozzetto_camera';
await Directory(directoryPath).create(recursive: true); // the error because of this line
String filePath = '$directoryPath/${DateTime.now()}.jpg';
try {
await _cameraController.takePicture(filePath);
} catch (e) {
return null;
}
return File(filePath);
}
这是我的AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
...
android:requestLegacyExternalStorage="true">
...
</application>
这充满了日志。
E/flutter (14879): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FileSystemException: Creation failed, path = 'Directory: '' (OS Error: Read-only file system, errno = 30)
E/flutter (14879): #0 _Directory.create.<anonymous closure> (dart:io/directory_impl.dart:117:11)
E/flutter (14879): #1 _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (14879): #2 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (14879): #3 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
E/flutter (14879): #4 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
E/flutter (14879): #5 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
E/flutter (14879): #6 Future._completeWithValue (dart:async/future_impl.dart:529:5)
E/flutter (14879): #7 Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
E/flutter (14879): #8 _rootRun (dart:async/zone.dart:1190:13)
E/flutter (14879): #9 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (14879): #10 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (14879): #11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter (14879): #12 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (14879): #13 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
解决方案
您需要修改目录路径。
只需更改代码
从
String directoryPath = '$root/bozzetto_camera';
到
String directoryPath = root.path + '/bozzetto_camera';
推荐阅读
- go - 命名 cookie 不存在
- flutter - 从 Provider 移动到 GetX 并且无法 Get.find 正确的 Controller
- rust - 如何在 solana 上获得程序作者?
- c# - 轴对象 - 自动间隔没有正确的值
- docker - 为什么我的 docker 镜像在 AWS ECS (Fargate) 中作为任务运行时会失败?
- ios - 带有 iframe 的 iOS 无法显示 H5 网页
- python-3.x - 将induvial索引的数学运算映射到3维数组中的每个数组
- django - Django DRF:ModelMixin Viewset:如何创建视图集以获取用户详细信息并编辑用户详细信息,而无需在 url 中传递 id
- javascript - 使用 okotkit 从 github API 嵌套 fileTree
- excel - 多个标准的平均值