求助:执行pubUpgrade后出现dart:js_interop库不可用问题
解决Error: Dart library 'dart:js_interop' is not available on this platform问题
排查依赖包版本变更
执行pub upgrade后大概率是某个依赖包更新时引入了仅Web平台可用的dart:js_interop。先查看pubspec.lock对比版本差异,定位最近更新的依赖包,找到可疑包后,在pubspec.yaml中临时指定回退到之前正常的版本号,再执行flutter pub get测试是否恢复。用条件导入隔离Web专属代码
如果是自己的代码涉及跨平台JS交互,必须通过条件导入确保非Web环境不加载dart:js_interop:- 创建通用入口文件
js_handler.dart:export 'js_handler_web.dart' if (dart.library.io) 'js_handler_mobile.dart'; - Web平台实现文件
js_handler_web.dart:import 'dart:js_interop'; // 编写Web端JS交互逻辑 - 非Web平台实现文件
js_handler_mobile.dart:// 空实现或移动端替代逻辑
彻底移除通用代码里直接导入
dart:js_interop的语句。- 创建通用入口文件
升级Flutter SDK到稳定版
部分旧版Flutter SDK对dart:js_interop的跨平台支持不完善,执行以下命令升级:flutter channel stable flutter upgrade升级后依次执行
flutter clean和flutter pub get,重新运行项目。检查间接依赖的平台限制
有些依赖可能间接引用了dart:js_interop,用flutter pub deps查看完整依赖树,找出仅支持Web平台的包。如果项目需要在非Web环境运行,要么移除该依赖,要么通过kIsWeb条件编译控制其仅在Web端生效。
内容的提问来源于stack exchange,提问作者sok vathanak
相关产品推荐
相关产品推荐

