Flutter接入url_launcher遇URI目标不存在错误,求解决方法
解决url_launcher导入错误的方案
1. 确认Flutter版本与依赖兼容性
url_launcher 6.3.2要求Flutter版本至少3.10.0。先运行以下命令确认你的准确Flutter版本:
flutter --version
如果你的版本确实是3.41.9(推测是版本号输入笔误,比如3.19.4),则满足最低要求;如果是更低版本(比如3.4.x),要么升级Flutter到3.10.0以上,要么把pubspec.yaml里的url_launcher版本降级到适配旧版本的,比如url_launcher: ^6.2.5(支持Flutter 2.10+)。
2. 检查VS Code的Flutter SDK路径配置
VS Code可能误加载了其他版本的Flutter SDK,导致依赖解析异常:
- 打开VS Code设置(Ctrl+,),搜索Flutter SDK Path
- 确认路径指向你本地正确的Flutter安装目录
- 保存设置后重启VS Code
3. 执行彻底的缓存清理与依赖重新安装
按顺序执行以下操作:
- 运行清理命令:
flutter clean - 手动删除项目根目录下的
pubspec.lock文件和.dart_tool文件夹 - 重新拉取依赖:
flutter pub get - 重新加载项目:按下Ctrl+Shift+P,选择Flutter: Reload Project
4. 检查基础配置细节
- 确认
pubspec.yaml在项目根目录,url_launcher依赖放在dependencies节点下(不是dev_dependencies) - 检查导入语句拼写:确保是
import 'package:url_launcher/url_launcher.dart';,无大小写或拼写错误
额外提示:代码中的变量问题
你的onNavigationRequest回调里存在未定义变量的问题,需要修正:
onNavigationRequest: (NavigationRequest request) async { final uri = Uri.parse(request.url); // 定义uri变量 if (await canLaunchUrl(uri)) { await launchUrl(uri, mode: LaunchMode.externalApplication); } else { debugPrint('Cannot open URL: ${request.url}'); // 使用request.url替代未定义的url } return NavigationDecision.prevent; },
内容的提问来源于stack exchange,提问作者anta40
相关产品推荐
相关产品推荐

