Flutter:如何将URI转换为File?

时间:2019-06-23 12:42:16

标签: flutter

我想将路径“ content:// media / external / images / media / 138501”转换为File并在Image中设置。

代码:

File imageFile = File("content://media/external/images/media/138501");

无法使用:

DecorationImage(image: ExactAssetImage(imageFile.path),fit: BoxFit.fill)

4 个答案:

答案 0 :(得分:0)

您可以使用Image.file构造函数。

DecorationImage(
  image: Image.file(File("content://media/external/images/media/138501")),
  fit: BoxFit.fill
)

请注意:在Android上,这可能需要android.permission.READ_EXTERNAL_STORAGE权限。

答案 1 :(得分:0)

我得到了答案。我们可以使用ByteData来创建File。我们可以使用以下方法从ByteData获取文件:

Future<File> writeToFile(ByteData data, String path) {
    final buffer = data.buffer;
    return new File(path).writeAsBytes(
        buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
  }

path =您可以使用库“ path_provider”

  

字符串dir =(等待getApplicationDocumentsDirectory())。path;

有关更多详细信息,您可以检查: https://medium.com/@wangdazhitech/flutter-read-asset-file-and-write-to-app-path-42115d4ec1b6

答案 2 :(得分:0)

您可以使用Absolute path插件。

final filePath = await FlutterAbsolutePath.getAbsolutePath(uriString);

,然后使用Image.file显示图像:

Image.file(
    File(filePath),
);

答案 3 :(得分:0)

使用flutter_absolute_path软件包。 flutter_absolute_path:^ 1.0.6在pubsec.yaml中

要从此格式转换文件路径:“content://media/external/images/media/5275”"/storage/emulated/0/DCIM/Camera/IMG_00124.jpg”

final filePath = await FlutterAbsolutePath.getAbsolutePath("Any path 
   here");

File tempFile = File(filePath);

    if (tempFile.existsSync()) {
      //add your logic here.
   }