Flutter Web - 将资产图像作为 File()

Posted

技术标签:

【中文标题】Flutter Web - 将资产图像作为 File()【英文标题】:Flutter Web - get asset image as File() 【发布时间】:2021-07-13 23:59:24 【问题描述】:

我正在使用第三方库,该库需要我通过 U8IntList 才能在 PDF 中显示图像。他们的示例让我在文件中获取图像并读取字节。

PdfBitmap(file.readAsBytesSync())

当我从服务器获取图像时,这个系统很棒,但我想显示存储在本地资产中的图像。

我试图实现的是这段代码..

 Future<File> getImageFileFromAssets(String path) async 

    final byteData = await rootBundle.load('assets/$path');
    final file = File('$(await getTemporaryDirectory()).path/$path');
    await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));

    return file;
  

返回错误'No implementation found for method getTemporaryDirectory on channel plugins.flutter.io/path_provider'。

如果有人知道如何在网络上将资产图像作为文件获取,我们将不胜感激。

【问题讨论】:

【参考方案1】:

为什么要将字节数据写入文件只是为了再次读取它?只需将您的字节数据直接传递给需要它的构造函数即可。这应该在您的网络移动实现上进行更改,因为它最终会快得多。

final byteData = await rootBundle.load('assets/$path');
PdfBitmap(byteData.buffer.asUint8List())

【讨论】:

我想我尝试了类似的方法,但不知道如何将 byteData 获取到 Uint8List。智能且简单的解决方案,非常感谢。

以上是关于Flutter Web - 将资产图像作为 File()的主要内容,如果未能解决你的问题,请参考以下文章

如何获得一个数组/列表,其中填充了我在 Flutter 中作为资产加载的所有图像路径?

如何在 Flutter web 上显示资产图像?

Flutter:无法加载资产图像提供者:AssetImage(bundle:null,名称:“assets/images/rose.jpg”)

在 Flutter 的 GridView 中显示资产图像?

Flutter web:如何将资产重定向到其他域?

如果 Flutter 中的 Image Picker 未选择,则显示默认图像