大家好,
我对以下代码有疑问:
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”参数时,它将完全停止工作并显示灰屏。任何帮助表示赞赏!
答案 0 :(得分:13)
您正在使用 {1>} 内部的小部件 (堆栈)。为了对其进行修复,请删除 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,
Running flutter app in release mode
它还会将apk保存在 Built build\app\outputs\flutter-apk\app-release.apk
答案 2 :(得分:0)
灰屏显示在发布版本中,而不是在调试版本中显示的红色错误消息,因为 Flutter 认为这比向用户显示错误消息要好。就我而言,我的一位用户报告了该问题,但我无法重现。事实证明,如果您启用了 Crashlytics,错误将显示为非致命错误。这使得查找问题变得简单。