【问题标题】:Flutter app show grey screen in release mode but works fine in debug mode Instance of 'DiagnosticsProperty<void>'Flutter 应用程序在发布模式下显示灰屏,但在调试模式下工作正常 'DiagnosticsProperty<void>' 的实例
【发布时间】:2020-08-20 06:35:24
【问题描述】:

我注意到该应用在调试模式下运行良好,但是当我在手机上尝试该 apk 时,该应用在加载屏幕后显示灰屏。 当我使用 https 并添加所有权限时。

Httpclient 在发布模式下不工作(I/flutter (22182): 抛出另一个异常:Instance of 'fr')

但在flutter android中以调试模式工作

【问题讨论】:

  • 请为您的问题提供更多信息。
  • 在运行中给我这个(发布模式)。 I/flutter (12736):引发了另一个异常:'DiagnosticsProperty' 的实例
  • @Ahmed:你解决了这个问题吗?我遇到了同样的问题
  • 另见此问题。我们的是相机模块,我们正在尝试显示一个页面来帮助用户自拍。在发布版本中,它会打印:引发了另一个异常:“DiagnosticsProperty”的实例。我们在 iOS 上看到了这一点,但在 Android 上没有。
  • 嗨@Ahmed,你能告诉我你的应用程序中使用了哪些包吗?

标签: android flutter https release


【解决方案1】:

当您在调试模式下运行应用并出现问题时,您会看到带有日志的可怕红色错误屏幕。在发布模式下,您只会看到一个灰屏。

现在,当您在调试模式下运行应用程序时,有时会抛出一些错误,但我们会错误地忽略它们,因为我们看到应用程序在屏幕上运行良好,但如果您在调试模式下打开日志,您将查看一些错误消息。

对我来说是这样的:

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following assertion was thrown while applying parent data.:
Incorrect use of ParentDataWidget.

The ParentDataWidget Expanded(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type StackParentData.

Usually, this means that the Expanded widget has the wrong ancestor RenderObjectWidget. Typically, Expanded widgets are placed directly inside Flex widgets.
The offending Expanded is currently placed inside a Stack widget.

我的应用在调试模式下完美运行,而 Flutter 仍然在后台抛出此错误。

现在,当我在发布模式下运行应用程序时,我看到一个灰屏,这与我在调试模式下完美运行的应用程序不同。

当我检查日志时,我看到了错误消息:

Flutter app show grey screen in release mode but works fine in debug mode Instance of 'DiagnosticsProperty<void>'

那么解决方案呢?

在调试模式下运行你的应用程序并检查日志,我相信你会在那里找到问题。只要代码中存在错误,更改 Flutter 通道就无济于事。

【讨论】:

  • 这就是我的解决方案!我在调试模式下重新启动并修复了所有问题,然后终于在发布模式下工作
  • 你是救世主......我浪费了一整天的时间寻找解决方案,然后我得到了你的答案。这对我有用。
  • 我们都去过@YuvrajPandey
  • 据您所知,是否有一种方法可以强制在调试模式下重现错误?也许在其他情况下会弹出红屏。 @devDeejay
  • 真的。你是救世主!非常感谢!
【解决方案2】:

就我而言,我在我的一个小部件上使用 Stack 内的 Expanded 小部件。

方法错误

Stack(
     children: [
          Expanded(child: buildHeader(context)),
          Align()
     ]),

正确的方法

Stack(
     children: [
          buildHeader(context),
          Align()
     ]),

我在安卓和 iOS 平台上都遇到了这个问题,这就是我解决它的方法。

【讨论】:

  • 对我来说,它只发生在 Web 发布版本上。扩大是罪魁祸首,谢谢!
  • 这是我的情况的解决方案
【解决方案3】:

首先,检查 AndroidManifest.xml (调试模式的 AndroidManifest.xml 文件与发布模式的 AndroidManifest.xml 文件不同。 检查目录:

android\app\src\debug\AndroidManifest.xml

和目录:

android\app\src\main\AndroidManifest.xml

即使你可以创建发布:

android\app\src\release\AndroidManifest.xml

尝试添加

<uses-permission android:name="android.permission.INTERNET" />

到您的目标 AndroidManifest.xml)。

调试模式下的红屏就像发布模式下的灰屏 这意味着您有错误代码,但对于调试模式,此错误可能类似于警告并且可以运行,并且您在调试模式下的应用程序中看不到任何问题! 但是对于发布模式,你应该修复它! 就像我的情况: 我正在尝试将位置小部件放入容器小部件中,但出现此错误:

Another exception was thrown: Instance of ‘DiagnosticsProperty’
Incorrect use of ParentDataWidget.

我通过将 Container 更改为 Stack 来修复它。

【讨论】:

  • 就我而言,这是一个权限问题。为此 +1。
【解决方案4】:

这个问题已经存在一段时间了,这里是related issue

我遇到过这个问题,但这取决于代码。对我来说,使用CacheNetworkImage issue#404,我传递了错误的imageUrl 或null,这导致了灰屏。 UI 在没有灰屏的情况下工作即使我在升级到 1.17.1(之前的颤振 1.12.13+hotfix.8)之前没有正确处理,现在一切都需要更加小心。

【讨论】:

    【解决方案5】:

    我遇到了类似的问题。在flutter upgrade 之后,它在发布模式下也可以正常工作。
    这些是我当前的版本:

    • Flutter 1.17.3 • 通道稳定 • https://github.com/flutter/flutter.git
    • 框架 • 修订版 b041144f83(8 天前) • 2020-06-04 09:26:11 -0700
    • 引擎 • 修订版 ee76268252
    • 工具• Dart 2.8.4

    【讨论】:

      猜你喜欢
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2019-12-05
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多