如何在 Flutter Web 中下载 CSV 并保留跨平台代码?



我正在从名为rowsList<List<dynamic>>生成一个 csv 文件,如下所示......

String csv = const ListToCsvConverter().convert(rows);

然后,如果我在移动设备(Android 或 IOS)上,我会将文件发送到电子邮件,如果我在网络上,我会使用AnchorElement将其下载到设备,这是import 'dart: html' as html的一部分,如下所示:

if (_prefs.platform == 'isWeb')
{
html.AnchorElement(href: "data:text/plain;charset=utf-8,$csv")
..setAttribute("download", "report.csv")
..click();
} else {
//To write csv as a file in a path and send it using FlutterEmailSender
}

它可以在Web上运行,但是当我尝试在Android或IOS中编译时会出现错误:

:错误:未找到:"dart:html">

将"dart:html"导入为html; ^

:错误:找不到方法:"锚元素"。 .html。AnchorElement(href: "data:text/plain;字符集=UTF-8,$csv")

我认为这是因为 IOS 和 Android 不支持 dart:html,所以我的问题是:

  1. 我可以使用哪些其他软件包/函数在 Web 上下载 CSV 文件,而不会生成编译错误(跨平台)?

  2. 作为替代解决方案,我是否可以使用某些命令,以便小部件仅在 Web 环境中运行时使用dart:html

你可以改用这个:

import 'package:universal_html/html.dart' as html hide Text;

最新更新