为什么我的 flutter 应用程序在调试模式下可以工作,但在发布后却不能工作

问题描述 投票:0回答:1

我在 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 获取代码以供查看,以备不时之需。

android flutter dart release
1个回答
1
投票

修复前

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());
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.