如何将 uri 转换为绝对路径 - flutter / Failed assertion: line 126 pos 12: 'file.absolute.existsSync()': is not true

时间:2021-06-24 10:48:01

标签: firebase flutter firebase-storage

当我尝试将图像上传到 Firebase 存储时出现此错误。

[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:'package:firebase_storage/src/reference.dart':断言失败:第 126 行 pos 12:'file.absolute.existsSync() ': 不是真的。

当我尝试使用 FlutterAbsolutePath.getAbsolutePath 时,出现此错误

未处理的异常:MissingPluginException(在通道 flutter_absolute_path 上找不到方法 getAbsolutePath 的实现)

 Future<void> loadAssets() async {
    List<Asset> resultList = List<Asset>();
    try {
      resultList = await MultiImagePicker.pickImages(
        maxImages: 6,
        enableCamera: true,
        selectedAssets: images,
        cupertinoOptions: CupertinoOptions(takePhotoIcon: "chat"),
        materialOptions: MaterialOptions(
          actionBarColor: "#abcdef",
          actionBarTitle: "Example App",
          allViewTitle: "All Photos",
          useDetailsView: false,
          selectCircleStrokeColor: "#000000",
        ),
      );
    } on Exception catch (e) {
      print(e);
    }

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;
    setState(() {
      images = resultList;
      _error = errorMessage;
      getFileList();
    });
  }
void getFileList() async{
    listFile.clear();
    for(int i=0; i<images.length; i++){
      var path= await images[i].identifier;
      print(path);
      var file=await getImageFileFromAsset(path);
      print(file);
      listFile.add(file);
    }
    setState(() {

    });
  }
Future<File> getImageFileFromAsset(String path) async {

 final file = File(path);
 return file;
}
  Future uploadFile() async {
int i = 1;
final String fileName = DateTime.now().toString();

for (var img in listFile) {
  setState(() {
    val = i / listFile.length;
  });
  print(img);

  Reference ref = FirebaseStorage.instance
      .ref()
      .child('images/${Path.basename(img.path)}');
  UploadTask uploadTask = ref.putFile(img);
  await uploadTask;

  //
  // FirebaseStorage  storage = FirebaseStorage.instance;
  //
  // Reference ref = FirebaseStorage.instance.ref('/images');

} }

0 个答案:

没有答案