【问题标题】:Flutter build web in existing project keeps failingFlutter 在现有项目中构建 Web 不断失败
【发布时间】:2020-04-22 21:03:21
【问题描述】:

我尝试通过以下步骤在现有的 Flutter 应用中构建网络

1. flutter channel beta
2. flutter config --enable-web
3. flutter create .
4. flutter run -d chrome

来自https://flutter.dev/docs/get-started/web

但我不知道我在哪里犯了错误,或者这是网络构建的问题,它一直失败。运行这些命令会显示此屏幕。

这是堆栈跟踪

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following UnsupportedError was thrown building Builder:
Unsupported operation: Platform._operatingSystem

The relevant error-causing widget was:
MaterialApp org-dartlang-app:///packages/qpal/main.dart:13:12

When the exception was thrown, this was the stack:
package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 196:49  throw_
package:dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 241:5               _operatingSystem
package:dart-sdk/lib/io/platform_impl.dart 62:40                                      get operatingSystem
package:dart-sdk/lib/io/platform.dart 73:45                                           get _operatingSystem
package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart 77:6     get
package:dart-sdk/lib/io/platform.dart 97:40                                           get operatingSystem
package:platform/src/interface/local_platform.dart 21:45                              get operatingSystem
package:platform/src/interface/platform.dart 41:38                                    get isIOS
package:firebase_messaging/firebase_messaging.dart 83:20                              requestNotificationPermissions
package:qpal/services/firebase_helper.dart 41:23                                      requestNotification
package:qpal/main.dart 57:20                                                          initState
package:flutter/src/widgets/framework.dart 4355:58                                    [_firstBuild]
package:flutter/src/widgets/framework.dart 4201:5                                     mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 5445:14                                    mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 4243:16                                    performRebuild
package:flutter/src/widgets/framework.dart 3947:5                                     rebuild
package:flutter/src/widgets/framework.dart 4206:5                                     [_firstBuild]
package:flutter/src/widgets/framework.dart 4201:5                                     mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 4201:5                                     mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 5551:32                                    mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/overlay.dart 591:16                                       mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 4243:16                                    performRebuild
package:flutter/src/widgets/framework.dart 3947:5                                     rebuild
package:flutter/src/widgets/framework.dart 4206:5                                     [_firstBuild]
package:flutter/src/widgets/framework.dart 4381:11                                    [_firstBuild]
package:flutter/src/widgets/framework.dart 4201:5                                     mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 4243:16                                    performRebuild
from splash
package:flutter/src/widgets/framework.dart 3947:5                                     rebuild
package:flutter/src/widgets/framework.dart 4206:5                                     [_firstBuild]
package:flutter/src/widgets/framework.dart 4201:5                                     mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 5445:14                                    mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 4243:16                                    performRebuild
package:flutter/src/widgets/framework.dart 3947:5                                     rebuild
package:flutter/src/widgets/framework.dart 4206:5                                     [_firstBuild]
package:flutter/src/widgets/framework.dart 4381:11                                    [_firstBuild]
package:flutter/src/widgets/framework.dart 4201:5                                     mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/framework.dart 2988:12                                    updateChild
package:flutter/src/widgets/framework.dart 5445:14                                    mount
package:flutter/src/widgets/framework.dart 3194:13                                    inflateWidget
package:flutter/src/widgets/binding.dart 999:5                                        mount
package:flutter/src/widgets/binding.dart 942:16                                       <fn>
package:flutter/src/widgets/framework.dart 2412:19                                    buildScope
package:flutter/src/widgets/binding.dart 941:12                                       attachToRenderTree
package:flutter/src/widgets/binding.dart 818:24                                       attachRootWidget
package:flutter/src/widgets/binding.dart 804:7                                        <fn>
package:dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 50:19       internalCallback

════════════════════════════════════════════════════════════════════════════════════════════════════

【问题讨论】:

  • 你能分享你的 main.dart 和 firebase_helper.dart 类吗?

标签: flutter dart flutter-web


【解决方案1】:

您可以尝试创建一个新项目并将额外的依赖项和 devDependencies 复制到新的 pubspec.yml,复制整个 lib 文件夹并检查它是否正在运行。如果它运行了,那么检查你在新项目和旧项目中的 sdk 版本并尝试使它们相同。

我遇到了类似的问题,并在上​​面尝试解决了我的问题。

environment:
  sdk: ">=2.6.0 <3.0.0"

【讨论】:

    【解决方案2】:

    删除Platform.IOSPlatform.Android。如果你使用它,你会看到一个异常。
    我有同样的问题,我就这样解决了。

    【讨论】:

    • 从哪里删除?
    【解决方案3】:

    @Thiago Silva (https://stackoverflow.com/users/8945078/thiago-silva) ,确实,由于您的代码仍然引用特定于平台的调用,有时会触发错误。比如错误

    "Unsupported operation: Platform._operatingSystem" 
    

    在这行 loginBloc 代码中触发:

    if(Platform.isIOS && Config.enableAppleAuthForIOS)
      firebaseAuthWidgets("apple_login_icon",authService,_signInWithApple),
    

    这基本上是因为,在这种情况下,操作系统实际上并没有暴露 webapp 访问系统和验证应用程序的结果。

    只需从已编辑的 android/ios 或 macOS 应用程序中删除这些残留的代码即可。

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 2021-05-09
      • 2021-12-07
      • 2021-11-15
      • 1970-01-01
      • 2019-09-22
      • 2021-12-26
      • 2021-11-05
      • 2020-05-14
      相关资源
      最近更新 更多