flutter中编译App和web两端时引入darthtml报错

在Flutter项目中,为了实现App和Web两端的兼容,开发过程中遇到了在引入dart:html时App端报错的问题。文章提到了两种解决方案:正确的方法是使用按条件导包,确保非web端使用不同的Utils包;而错误的做法是使用相对路径导入,这会导致Web端加载错误的包,从而引发JavaScript报错。
摘要由CSDN通过智能技术生成

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端的下载需要用到原生的javarcripta 标签下载。
所以需要根据判断平台的不同比如说是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报错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值