title: flutter中编译App和web两端时引入dart:html报错
date: 2023-01-23 14:25:37.601
updated: 2023-01-23 14:26:56.133
url: https://hexo.start237.top/archives/flutter-zhong-bian-yi-app-he-web-liang-duan-shi-yin-ru-darthtml-bao-cuo
categories:
- IT技术
- 发光如星
tags: - flutter
问题
背景
在开发 发光如星 的下载功能时,由于app是多端运行,需要支持web和app端。web端的下载需要用到原生的javarcript
的 a
标签下载。
所以需要根据判断平台的不同比如说是web就运行这套代码,如果是安卓系统就运行另一套代码。
但是在引入 dart:html
这个包的时候,编译APP端,就报错了。
在网络上搜索出来一些解决文案
解决方案
正确的解决文案
使用按条件导包的方式来进行适配就不会出现这个问题了
import 'package:Shine_like_a_star/utils/downUtils.dart' if (dart.library.html) 'package:Shine_like_a_star/utils/downHtmlUtils.dart';
这句代码的意思就是,如果不是web端就默认使用 import后面的包,如果是web端就引入 if (dart.library.html)
的包。
错误的解决文案
import '../utils/downUtils.dart' if(dart.library.html) '../utils/downHtmlUtils.dart';
不知道为什么,这样用相对路径引入的包,实际打包运行后。web引入的是默认 import
语句后面的包,这就导致web端的javascript
报错。