处于释放模式时,网页浏览显示灰屏

时间:2020-02-19 04:15:07

标签: flutter

大家好,

我对以下代码有疑问:

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”参数时,它将完全停止工作并显示灰屏。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:13)

您正在使用 {} 内部的小部件 (堆栈)。为了对其进行修复,请删除 Expanded 并将fit参数应用于您的 Expanded

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, ), ], ) ], ); } } 总是尝试避免出现问题/崩溃,因此将禁用UI的那部分,即=灰色屏幕。

答案 1 :(得分:1)

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

使用Android Studio,

  • 连接物理设备
  • 单击运行> 在发行模式下Flutter运行'main.dart'

Running flutter app in release mode

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

答案 2 :(得分:0)

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