我在 stackovwrflow 中阅读了一些其他有类似问题的主题,但没有得到解答。所以我在这里问。 我正在 android studio 中使用 flutter 开发一款空气曲棍球游戏。调试模式下一切正常。但是当我构建发行版本时,它无法正常工作。
也许这些信息有帮助:
我在使用 Android 4 的小米手机上测试了该应用程序。在该设备中,有时该应用程序会打开。但大多数时候只出现黑屏,没有其他内容。 (大约 70% 的情况下会失败。) 另一种设备是搭载 Android 8 的三星 Galaxy J7。在这种情况下,黑屏发生的次数较多。 (约 90%)。 第三台设备是搭载 Android 11 的小米 POCO X3 Pro。在这种情况下,我无法使用该应用程序一次。
我使用的库是:
'package:flutter/services.dart'
'dart:async'
'dart:math'
如果您需要更多信息,请告诉我。 顺便说一下,您可以从 github 获取代码以供查看,以备不时之需。
修复前:
void main() {
runApp(const MyApp());
}
请更改为以下内容:
如果您
environment sdk: '>=2.x <3.0.0'
,您可以使用以下代码:
import 'dart:ui';
Future<void> main() async {
if (window.physicalSize.isEmpty) {
window.onMetricsChanged = () {
if (!window.physicalSize.isEmpty) {
window.onMetricsChanged = null;
runApp(const MyApp());
}
};
} else {
runApp(const MyApp());
}
}
如果您的
environment sdk: ^3.0.0
可以使用以下代码:
Future<void> main() async {
FlutterView? flutterView = PlatformDispatcher.instance.views.firstOrNull;
if (flutterView == null || flutterView.physicalSize.isEmpty) {
PlatformDispatcher.instance.onMetricsChanged = () {
flutterView = PlatformDispatcher.instance.views.firstOrNull;
if (flutterView != null && !flutterView!.physicalSize.isEmpty) {
PlatformDispatcher.instance.onMetricsChanged = null;
runApp(const MyApp());
}
};
} else {
runApp(const MyApp());
}
}