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

Flutter Web中dart.global.firebase.messaging为空的NoSuchMethodError解决求助

Flutter Web 解决 NoSuchMethodError: dart.global.firebase.messaging 错误

问题描述

运行Flutter Web应用时,界面未显示错误,但调试控制台抛出以下错误:
NoSuchMethodError: tried to call a non-function, such as null: 'dart.global.firebase.messaging'

调试控制台堆栈信息:

NoSuchMethodError: tried to call a non-function, such as null: 'dart.global.firebase.messaging'
packages/firebase_messaging_web/src/interop/messaging.dart 21:26                         getMessagingInstance
packages/firebase_messaging_web/firebase_messaging_web.dart 28:27                        get [_delegate]
packages/firebase_messaging_web/firebase_messaging_web.dart 109:5                        getToken
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                       runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                       _async
packages/firebase_messaging_web/firebase_messaging_web.dart 108:27                       getToken
packages/firebase_messaging/src/messaging.dart 117:22                                    getToken
packages/hello_world/......
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                       runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                       _async
packages/hello_world/......
packages/hello_world/......  <fn>
packages/riverpod/src/common.dart 524:24                                                 <fn>
packages/riverpod/src/common.dart 283:16                                                 map
packages/riverpod/src/common.dart 523:12                                                 AsyncValueX.when
packages/hello_world/......
packages/flutter/src/widgets/framework.dart 4876:22                                      build
packages/flutter/src/widgets/framework.dart 4806:15                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 4883:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 4883:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 5825:32                                      updateChildren
packages/flutter/src/widgets/framework.dart 6375:17                                      update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5009:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5009:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 6222:14                                      update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 6222:14                                      update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5009:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5009:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5009:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5154:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 5009:5                                       update
packages/flutter/src/widgets/framework.dart 3530:14                                      updateChild
packages/flutter/src/widgets/framework.dart 4832:16                                      performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                                      performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                       rebuild
packages/flutter/src/widgets/framework.dart 2659:18                                      buildScope
packages/flutter/src/widgets/binding.dart 891:9                                          drawFrame
packages/flutter/src/rendering/binding.dart 370:5                                        [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1146:15                                      [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1083:9                                       handleDrawFrame
packages/flutter/src/scheduler/binding.dart 997:5                                        [_handleDrawFrame]
lib/_engine/engine/platform_dispatcher.dart 1090:13                                      invoke
lib/_engine/engine/platform_dispatcher.dart 160:5                                        invokeOnDrawFrame
lib/_engine/engine/initialization.dart 194:45                                            <fn>
dart-sdk/lib/async/zone.dart 1442:13                                                     _rootRunUnary
dart-sdk/lib/async/zone.dart 1335:19                                                     runUnary
dart-sdk/lib/async/zone.dart 1244:7                                                      runUnaryGuarded
dart-sdk/lib/async/zone.dart 1281:26                                                     <fn>

解决办法

  • 检查Firebase Messaging JS SDK引入
    确保在web/index.html中,先引入Firebase核心SDK,再引入messaging的JS库,版本要统一:

    <!-- Firebase核心SDK -->
    <script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-app.js"></script>
    <!-- Firebase Messaging SDK -->
    <script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-messaging.js"></script>
    

    版本号需与pubspec.yaml中firebase_messaging_web依赖兼容,建议使用官方推荐的稳定版本。

  • 确认Firebase初始化配置完整
    检查web/index.html中的初始化代码是否包含messagingSenderId:

    const firebaseConfig = {
      apiKey: "你的API_KEY",
      authDomain: "你的AUTH_DOMAIN",
      projectId: "你的PROJECT_ID",
      storageBucket: "你的STORAGE_BUCKET",
      messagingSenderId: "你的MESSAGING_SENDER_ID",
      appId: "你的APP_ID"
    };
    firebase.initializeApp(firebaseConfig);
    
  • 验证依赖版本兼容性
    打开pubspec.yaml,确保firebase_messaging和firebase_core的版本适配,可执行flutter pub upgrade升级到最新稳定版。

  • 控制Messaging实例初始化时机
    避免在Firebase初始化完成前调用FirebaseMessaging.instance相关方法,可通过以下方式确保初始化完成:

    void initFirebase() async {
      await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
      // 初始化完成后再调用messaging方法
      final token = await FirebaseMessaging.instance.getToken();
    }
    
  • 清理缓存并重新构建
    执行以下命令清理项目缓存,重新构建Web应用:

    flutter clean
    flutter pub get
    flutter build web
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:10:55