在flutter中将“html”类型文件转换为“io”类型文件

Posted

技术标签:

【中文标题】在flutter中将“html”类型文件转换为“io”类型文件【英文标题】:Converting "html" type file into "io" type file in flutter 【发布时间】:2021-01-04 01:55:04 【问题描述】:

有什么方法可以将html 类型文件转换为io 类型文件? 出于某种原因,我需要从 html 初始化文件,并且我想转换为 io 类型文件以将其显示在 Image 小部件中,通知 FileImage(_itemPic)

import 'dart:html' as html;
import 'dart:io' as io;

Class AddNewItemView StatefulWidget
..........
html.File _itemPic;
...........
Container(
        decoration: BoxDecoration(
            image: DecorationImage(
               image: _itemPic != null
                     ? FileImage(_itemPic)  <<--- Now here I need io type file
                      : AssetImage(defaultItemimage),
               fit: BoxFit.cover,
             ),
            ),
          ),
..........

【问题讨论】:

我不确定这是否可能,这两个对象不共享相同的属性。你真的需要使用 FileImage 吗?我觉得你可以改用MemoryImage 【参考方案1】:

这可能是一种解决方法。您可以先使用 html 阅读器将其转换为 base64。然后将其解码为 IO 文件。

final reader = html.FileReader();
reader.readAsDataUrl(_itemPic);

reader.onLoad.first.then((res) 
  final encoded = reader.result as String;
  final imageBase64 = encoded.replaceFirst(RegExp(r'data:image/[^;]+;base64,'), '');// this is to remove some non necessary stuff
  io.File _itemPicIoFile = io.File.fromRawPath(base64Decode(base64Image));
);

希望这会有所帮助!问候

编辑: 我错过了原帖中的阅读部分。

【讨论】:

以上是关于在flutter中将“html”类型文件转换为“io”类型文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中将 XFile 转换为文件

如何在 Flutter 中将图像转换为文件?

在 Dart Flutter 中将文件转换为 Blob

如何在 Flutter 中将 JSON 转换为对象? [关闭]

使用 File Picker 在 Flutter 中将 PlatformFile 制作成 File

在 Flutter 错误中将 base64 转换为图像