如何在 Flutter 中将 XFile 转换为文件

sha*_*god 8 dart firebase flutter

我想将 XFile 转换为 File 以将文件上传到 Firebase,因为 Firebase 仅以文件格式上传。代码如下:

XFile videofile;
videofile = file;
await FirebaseStorage.instance.ref(imageRef).putFile(videoFile);
Run Code Online (Sandbox Code Playgroud)

报错说 XFile 无法上传到 Firebase

使用 XFile 包中的XFile 包会出现另一个错误:

名称“XFile”在库“package:cross_file/src/types/interface.dart”和“package:xfile/src/xfile_core.dart(通过 package:xfile/xfile.dart)”中定义。尝试对导入指令之一使用“作为前缀”,或者对导入指令之一隐藏名称。

文件中的其他依赖项是

import 'dart:async';
import 'dart:io';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
Run Code Online (Sandbox Code Playgroud)

小智 27

要将 Xfile 图像转换为文件图像以在小部件内显示图像,您可以使用:

XFile? selectedImage;

Image.file(File(selectedImage!.path))
Run Code Online (Sandbox Code Playgroud)


yas*_*ngr 13

File file = File(videofile.path);
Run Code Online (Sandbox Code Playgroud)

.toFile() 可能不起作用,因为 XFile 插件可能与其他插件冲突

  • 以防万一其他人遇到这种情况。我不小心从“dart:html”导入,应该从“dart:io”导入。 (19认同)

小智 5

对于任何面临 所返回的网络类型路径xFile.path(无法用于创建文件)的挑战的人,您可以改为使用 FireStoreputData函数并以字节形式读入 xFile。

FirebaseStorage store = FirebaseStorage.instance;
final _picker = ImagePicker();
XFile? pickedImage = await _picker.pickImage(source: ImageSource.gallery);
    if (pickedImage != null) {
      TaskSnapshot task = await store.ref(imageRef).putData(await pickedImage.readAsBytes());
    }
Run Code Online (Sandbox Code Playgroud)

在处理/处理之前,根据需要压缩图像始终是一个好主意。