flutter - Flutter:如何将 URI 转换为文件?
问题描述
我想将路径“content://media/external/images/media/138501”转换为文件并在图像中设置。
代码:
File imageFile = File("content://media/external/images/media/138501");
不工作:
DecorationImage(image: ExactAssetImage(imageFile.path),fit: BoxFit.fill)
解决方案
您可以使用uri_to_file包。它支持 content:// URI。
易于使用(更新)
import 'package:uri_to_file/uri_to_file.dart';
try {
String uriString = 'content://sample.txt';
// Don't pass uri parameter using [Uri] object via uri.toString().
// Because uri.toString() changes the string to lowercase which causes this package to misbehave
// If you are using uni_links package for deep linking purpose.
// Pass the uri string using getInitialLink() or linkStream
File file = await toFile(uriString);
} on UnsupportedError catch (e) {
print(e.message);
} on IOException catch (e) {
print(e);
} catch (e) {
print(e);
}
那么你可以随意使用这个文件
重要的提示
不要像这样传递uri值
File file = await toFile(uri.toString());
如果您使用uni_links包进行深度链接,请像这样使用。使用 getInitialLink() 或 linkStream
String? uriString = await getInitialLink();
if (uriString != null) {
File file = await toFile(uriString);
}
linkStream.listen((uriString) async {
if (uriString != null) {
File file = await toFile(uriString!);
}
});
这不会修改 uri 字符串,因为我们没有使用 uri.toString()
所以这个包可以正常工作
工作示例: 工作示例
有关更多详细信息:uri_to_file
推荐阅读
- c - Linux 内核 rootkit:从内存中读取数据并将检索到的数据用作偏移量
- plot - 如何在 Mathematica 中找到两个 3D 曲面的交点?
- java - 你如何使用 Textureview 作为 cameraX 的预览 [Java]
- python - 将一个函数及其所有子函数传递给 njit
- java - 尝试通过 AutoConfigureMockMvc 自动配置时集成测试失败
- mysql - 需要将一列中的数据显示到标识符相同的单独行的同一列中
- nextflow - Google 生命科学中的 Nextflow 和抢占式机器
- deep-learning - 哪种格式更适合 tflite 模型 NCHW 或 NHWC?
- python - 在子列表中查找一个元素,当找到该元素时,将列表中的所有其他元素附加到另一个列表中
- c# - 针对 AD 组的 ASP.NET Core 5 MVC 上的 Windows 身份验证