flutter 类型“文件/*1*/”不能分配给类型“文件/*2*"-”文件/*1*/“来自”dart:io“,-”文件/*2*/“来自”package:universal_io/src/io/file.dart

vyu0f0g1  于 2023-02-05  发布在  Flutter
关注(0)|答案(1)|浏览(169)

我想用这个函数上传图片到我的supabase存储,我用riverpod_flutter进行状态管理,下面是我的代码:

class ServicesRepository{
 Future<String> uploadServicesImageApi(String path, File image) async {
    final response = await Supabase.instance.client.storage
        .from('services')
        .upload(path, image);

    return response;
  }
}

但我认为是错误的错误:无法将参数类型“文件/1/”赋给参数类型“文件/2/”. lib/.../存储库/services_repository.dart:38 -“文件/1/”来自“dart:io”。-“文件/2/”来自“软件包:universal_io/src/io/file.dart”('../../../AppData/Local/Pub/Cache/hosted/pub.dev/universal_io-2.0.4/
尽管如此,我还是将导入从import 'dart:io'更改为import 'dart:io' as i,并将代码更改为

Future<String> uploadServicesImageApi(String path, i.File image) async {
    final response = await Supabase.instance.client.storage
        .from('services')
        .upload(path, image as i.File);

    return response;
  }

我得到了同样的错误,有没有无论如何修复它,顺便说一句,我正在使用flutter web。

oxf4rvwz

oxf4rvwz1#

首先,您不能在Web上使用dart:io,因为它是由Dart VM提供的纯本地库,因此如果您尚未针对Web目标进行测试,这将给您带来问题。
第二,您看到的错误指出您试图使用dart:io中的File,而实际上应该使用package:universal_io中的File

  • 删除您的dart:io导入(无论如何,您都需要这样做才能指向Web)
  • dart:io放在库前缀后面,就像在第二个示例中那样,但要将i.File替换为File
  • 通过执行以下操作从dart:io导入中隐藏File:x1米11米1x

相关问题