【问题标题】:Pageview display grey screen when in release mode发布模式下浏览量显示灰屏
【发布时间】:2020-02-19 04:15:07
【问题描述】:

大家好,

我对以下代码有疑问:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Expanded(
          child: PageView(
            children: <Widget>[
              Container(
                color: Colors.red,
              ),
              Container(
                color: Colors.yellow,
              ),
              Container(
                color: Colors.green,
              ),
              Container(
                color: Colors.blue,
              ),
            ],
          ),
        ),
      ],
    );
  }
}

当我使用“flutter run”运行它时,它会准确显示我需要的内容,但是当我使用“--release”参数时,它会完全停止工作并显示灰色屏幕。任何帮助表示赞赏!

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您在 Widget (Stack) 中使用 Expanded,它有自己的特点。为了修复它,删除 Expanded 并将 fit 参数应用于您的 Stack

    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    class _MyAppState extends State<ThisApp> {
      @override
      Widget build(BuildContext context) {
        return Stack(
          fit: StackFit.expand, // StackFit.expand fixes the issue
          children: <Widget>[
            PageView(
              children: <Widget>[
                Container(
                  color: Colors.red,
                ),
                Container(
                  color: Colors.yellow,
                ),
                Container(
                  color: Colors.green,
                ),
                Container(
                  color: Colors.blue,
                ),
              ],
            )
          ],
        );
      }
    }
    

    使用调试模式,您会注意到堆栈跟踪告诉您该错误。因为--release 总是尽量避免出现问题/崩溃,所以会禁用 UI 的那部分,也就是灰屏。

    【讨论】:

    • 非常感谢!
    • 你太棒了
    • 我在华为手机 (Android 10) 上遇到了灰屏问题,但在我的平板电脑 (Android 5) 或三星 note 9 (Android 10) 上,甚至在模拟器上都没有.我所做的只是删除了 Expanded 并且一切都恢复了。谢谢。
    【解决方案2】:

    就我而言,调试模式下没有错误或警告。 我通过在release mode 中运行应用程序修复了灰屏

    使用 Android Studio,

    • 连接物理设备
    • 点击运行 > Flutter Run 'main.dart' in Release Mode

    Running flutter app in release mode

    它还会将 apk 保存在 Built build\app\outputs\flutter-apk\app-release.apk

    【讨论】:

      【解决方案3】:

      灰色屏幕显示在发布版本中,而不是在调试版本中显示的红色错误消息,因为 Flutter 认为它比向用户显示错误消息更好。就我而言,我的一位用户报告了这个问题,但我无法重现它。事实证明,如果您启用了 Crashlytics,错误将显示为非致命错误。这使得查找问题变得简单。

      【讨论】:

        【解决方案4】:

        我使用 debug 来发现问题所在,并且它非常详细且准确地确定了错误的位置(在我的情况下,它是 Positioned inside a Center 小部件)。

        【讨论】:

        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2020-04-17
        • 1970-01-01
        • 2021-05-05
        • 1970-01-01
        • 2021-03-05
        • 2020-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多