关于将图像上传到 Firebase 存储(使用 image_picker 0.8.3+1)

About uploading images to Firebase Storage (with image_picker 0.8.3+1)

Image_Picker更新后,使用“XFile”代替“File”,使用“pickImage(...)”代替“getImage(...)”。

await _picker.pickImage(source: ImageSource.camera)

此代码现在 returns XFile。

相关代码如下

    XFile _image;
    final ImagePicker _picker = ImagePicker();

    Future getImageFromCamera() async {
      final pickedFile = await _picker.pickImage(source: ImageSource.camera);

      setState(() {
        if (pickedFile != null) {
          _image = pickedFile;
        } else {
          print("No image selected");
        }
      });
    }

    Future<void> uploadImageToStorage(XFile imageFile) async {
      String imageName = "${AuthService().getCurrentUID()}";

      FirebaseStorage.instance
          .ref()
          .child("photos")
          .child(imageName)
          .putFile(_image);
    }

错误

The argument type 'XFile' can't be assigned to the parameter type 'File'. 

我无法在 putFile(...) 中写入“_image”。它要求我输入“文件”类型。但是 _image 是“XFile”类型。 如何将图片上传到 Firebase 存储?

import 'dart:io' as i;

Future<void> uploadImageToStorage(XFile imageFile) async {
      String imageName = "${AuthService().getCurrentUID()}";

      FirebaseStorage.instance
          .ref()
          .child("photos")
          .child(imageName)
          .putFile(i.File(_image.path));
    }

您需要使用 XFile 路径中的 File 将其转换为文件对象。