尝试使用 Firebase 远程配置运行 Flutter WEB 应用程序时出错 [关闭]

Posted

技术标签:

【中文标题】尝试使用 Firebase 远程配置运行 Flutter WEB 应用程序时出错 [关闭]【英文标题】:Error trying to run a Flutter WEB app, using Firebase Remote Config [closed] 【发布时间】:2021-09-30 13:14:41 【问题描述】:

我有一个使用 Firebase 的 Flutter 应用,在 iosandroid(模拟器和物理设备)上运行良好。

我正在尝试为 web 编译和运行它,但在尝试使用 Firebase 服务时出现错误(特别是 ConfigRemote,但我怀疑这是 Firebase 的一般问题)。

这是我第一次尝试使用 Firebase 为 web 编译,所以我在这里的知识非常有限......

我做了什么:

    在 Firebase 控制台上添加了一个网络应用 将所需的脚本复制到body标签(index.html)中 添加了所有依赖脚本 (index.html)
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js"></script>
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js"></script>
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js"></script>
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-functions.js"></script>
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-storage.js"></script>
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-remote-config.js"></script>
     <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-messaging.js"></script>

我遇到的错误(在 await ui.webOnlyInitializePlatform()):

Error: NoSuchMethodError: '<Unexpected Null Value>'
method not found
Receiver: null
Arguments: []
    at Object.throw_ [as throw] (http://localhost:64231/dart_sdk.js:5348:11)
    at Object.throwNullValueError (http://localhost:64231/dart_sdk.js:5314:15)
    at Object._notNull [as notNull] (http://localhost:64231/dart_sdk.js:5667:25)
    at new core.Duration.new (http://localhost:64231/dart_sdk.js:123963:168)
    at method_channel_firebase_remote_config.MethodChannelFirebaseRemoteConfig.new.setInitialValues (http://localhost:64231/packages/firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart.lib.js:230:26)
    at Function.instanceFor (http://localhost:64231/packages/firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart.lib.js:88:118)
    at firebase_remote_config.RemoteConfig.__.get [_delegate] (http://localhost:64231/packages/firebase_remote_config/firebase_remote_config.dart.lib.js:62:131)
    at firebase_remote_config.RemoteConfig.__.setConfigSettings (http://localhost:64231/packages/firebase_remote_config/firebase_remote_config.dart.lib.js:138:18)
    at _loadRemoteConfig (http://localhost:64231/packages/bla/main.dart.lib.js:299:26)
    at _loadRemoteConfig.next (<anonymous>)
    at runBody (http://localhost:64231/dart_sdk.js:39250:34)
    at Object._async [as async] (http://localhost:64231/dart_sdk.js:39281:7)
    at Object._loadRemoteConfig (http://localhost:64231/packages/bla/main.dart.lib.js:293:18)
    at main$ (http://localhost:64231/packages/bla/main.dart.lib.js:288:18)
    at main$.next (<anonymous>)
    at http://localhost:64231/dart_sdk.js:39230:33
    at _RootZone.runUnary (http://localhost:64231/dart_sdk.js:39087:58)
    at _FutureListener.thenAwait.handleValue (http://localhost:64231/dart_sdk.js:34073:29)
    at handleValueCallback (http://localhost:64231/dart_sdk.js:34633:49)
    at Function._propagateToListeners (http://localhost:64231/dart_sdk.js:34671:17)
    at _Future.new.[_completeWithValue] (http://localhost:64231/dart_sdk.js:34513:23)
    at async._AsyncCallbackEntry.new.callback (http://localhost:64231/dart_sdk.js:34536:35)
    at Object._microtaskLoop (http://localhost:64231/dart_sdk.js:39374:13)
    at _startMicrotaskLoop (http://localhost:64231/dart_sdk.js:39380:13)
    at http://localhost:64231/dart_sdk.js:34887:9

【问题讨论】:

【参考方案1】:

web 上目前不支持远程配置,请从 index.html 和应用程序中删除该远程配置,在执行远程配置逻辑之前检查您是否在 web 上运行。

void remoteConfigLogic()
if(!kIsweb) runLogic();

kIsweb 是一个颤振布尔值,用于告诉您您使用的平台是否为 web。

【讨论】:

文档说现在在网络上支持它:firebase.flutter.dev【参考方案2】:

Flutter Web https://firebase.flutter.dev 不支持远程配置

我还建议您从 index.html 中删除 js 脚本,并注意远程配置所期望的条件以避免代码中出现更多异常。

【讨论】:

这不再是真的,但我仍然遇到同样的问题 同理,RemoteConfig 支持网络,但错误仍然存​​在

以上是关于尝试使用 Firebase 远程配置运行 Flutter WEB 应用程序时出错 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 远程配置 (Web) 始终使用 Samsung Internet 的默认值

Firebase 远程配置 isDeveloperModeEnabled() 已弃用

统一的 Firebase 远程配置仅获取默认值而不是真实值

Firebase A/B 测试版本定位

Firebase 远程配置:Unity 项目的版本条件已禁用

在 iOS 应用中使用远程配置 Firebase