You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter url_launcher插件返回崩溃:Receiver not registered异常

问题解决:url_launcher返回时应用崩溃(Receiver not registered)

核心原因

报错java.lang.IllegalArgumentException: Receiver not registered是因为url_launcher内置的WebViewActivity在销毁阶段,尝试注销一个未完成注册的广播接收器,属于插件内部生命周期同步问题。当前插件默认使用内置WebView打开链接而非外部浏览器,才触发了这个bug。

快速解决方案

1. 强制唤起外部浏览器(推荐)

调用launchUrl时指定LaunchMode.externalApplication,跳过插件内置WebView,直接用系统默认浏览器打开链接,从根源规避WebViewActivity的销毁异常:

import 'package:url_launcher/url_launcher.dart';

// 打开链接的方法
Future<void> launchExternalUrl(String url) async {
  final Uri uri = Uri.parse(url);
  if (await canLaunchUrl(uri)) {
    await launchUrl(
      uri,
      mode: LaunchMode.externalApplication, // 强制用外部浏览器
    );
  }
}

2. 升级url_launcher到最新稳定版

该bug可能已在后续版本中修复,更新pubspec.yaml中的插件版本:

dependencies:
  url_launcher: ^6.2.5 # 替换为最新稳定版

执行flutter pub get后重新测试。

3. (备选)排查页面重建时的状态问题

如果必须使用内置WebView,可检查页面的dispose方法是否有干扰插件生命周期的逻辑,同时确保在页面重建时,url_launcher的异步调用已正确取消或完成。不过此方法复杂度较高,优先推荐前两种方案。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:44:56