【问题标题】:Error in converting images to LIst<Asset> in flutter在颤动中将图像转换为 LIst<Asset> 时出错
【发布时间】:2021-02-05 05:44:34
【问题描述】:

我正在尝试将转换后图像的文件类型转换为列表,但出现以下错误

 for (int i = 0;i < widget.image.length;i++) {
   var path = await FlutterAbsolutePath.getAbsolutePath(
     widget.image[i].identifier);
     print("path");
     print(path);
     File compressedFile =await FlutterNativeImage.compressImage(path, 
     quality: 90);
     final List<Asset> image=compressedFile;
     Navigator.push(context,MaterialPageRoute(builder: (context) => 
     Share_Convert_Iamge(image: image)),
   );

【问题讨论】:

    标签: image flutter dart


    【解决方案1】:

    您转换了一个文件,它不是图像列表。如果您尝试将此图像加载到小部件,您可以尝试使用Image.file

    Image.file(
      compressedFile,
    );
    

    在你的情况下,它会是这样的:

    final List<File> images = [];
    for (int i = 0;i < widget.image.length;i++) {
      final path = await FlutterAbsolutePath.getAbsolutePath(
        widget.image[i].identifier,
      );
      File compressedFile = await FlutterNativeImage.compressImage(
        path, 
        quality: 90,
      );
      images.add(compressedFile);
    }
    

    并将其转换为列表:

    images.map((imageFile) => Image.file(imageFile)).toList();
    

    【讨论】:

    • 图片列表
    • 谢谢你的回答,但我想要 List
    • 我想要 List 的列表而不是 List
    • 当你转换一个图像时你没有得到一个图像,你得到一个文件。
    【解决方案2】:

    所以,据我所知,您想要创建一个图像列表。因此,如果我的假设是正确的,您应该执行以下操作:

    final List<File> images = List<File>();
     for (int i = 0; i < widget.image.length;i++) {
       var path = await FlutterAbsolutePath.getAbsolutePath(widget.image[i].identifier);
         print("path");
         print(path);
         File compressedFile = await FlutterNativeImage.compressImage(path, quality: 90);
         images.add(compressedFile);
         Navigator.push(context,MaterialPageRoute(builder: (context) => 
         Share_Convert_Iamge(image: images)),
       );
    

    现在,我不太明白你的问题。但你做错的是: 变量“image”是“List”类型的,这意味着它包含“Asset”类型的对象列表。 但是变量“compressedFile”的类型是“File”。现在,就像您不能将浮点值分配给整数类型的变量一样,例如:

    // This will give you an error.
    int x = 12.56;
    
    // This will work.
    float x = 12.56;
    

    所以,错误只是类型不匹配的情况。

    现在,如果你想在某处显示图像,你可以使用以下 Widget:

    Image.file(file_variable)
    

    这里,file_variable 的类型是“文件”。

    【讨论】:

    • @JanviPatel 使用我建议的代码。它将允许您使用文件列表(在本例中为图像)。
    • 它在最终的 List 图像中创建一个错误;这行它必须被初始化错误来了
    • @JanviPatel 我做了一些小改动,这应该会有所帮助。
    • 但我想要 List 以便我可以在列表视图的下一页中显示图像
    • 但我认为您不需要将图像作为资产。您可以将其作为文件并仍然使用它。如果您不介意,可以分享您显示图像的代码吗?
    猜你喜欢
    • 2020-06-14
    • 2020-10-09
    • 2020-04-16
    • 2020-09-15
    • 1970-01-01
    • 2019-07-30
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多