I have read some other topics in stackovwrflow with similar problems, But none is answered. So I'm asking here. I am developing an airhockey game using flutter in android studio. Everything is normal in debbuging mode. But when I build a release version, it's not working correctly.
Maybe this informations help:
I tested the app on a Xiaomi which uses android 4. In that device, sometimes the app will open. but most of the time only a black screen appears and nothing else. (about 70% of the time it fails.) An other device is a Samsung galaxy J7 with android 8. In that case, the black screen happens more. (about 90%). The third device is a Xiaomi POCO X3 Pro with android 11. In that case, I could not use the app for just a single time.
The libraries I used are:
'package:flutter/services.dart'
'dart:async'
'dart:math'
let me know if you need more information. By the way you can get code from github to look in case you need.
Before Fixing:
void main() {
runApp(const MyApp());
}
Please change it to the Following:
If your environment sdk: '>=2.x <3.0.0'
you can use the following code:
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());
}
}
If your environment sdk: ^3.0.0
can use the following code:
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());
}
}