Skip to content

Instantly share code, notes, and snippets.

@dJani97
Created March 28, 2021 13:44
Show Gist options
  • Save dJani97/79ce55d1e80fef96e37a8c21ee85e94c to your computer and use it in GitHub Desktop.
Save dJani97/79ce55d1e80fef96e37a8c21ee85e94c to your computer and use it in GitHub Desktop.
flutter_displaymode helper class
import 'dart:developer';
import 'package:flutter_displaymode/flutter_displaymode.dart';
class DisplayModeUtil {
static Future<void> setOptimalDisplayMode() async {
final DisplayMode optimalDisplayMode = await _getOptimalDisplayMode();
if (optimalDisplayMode != null) {
FlutterDisplayMode.setMode(optimalDisplayMode);
}
return;
}
static Future<DisplayMode> _getOptimalDisplayMode() async {
try {
final List<DisplayMode> supported = await FlutterDisplayMode.supported;
final DisplayMode current = await FlutterDisplayMode.current;
final List<DisplayMode> sameResolution = supported
.where((DisplayMode m) =>
m.width == current.width && m.height == current.height)
.toList();
sameResolution.sort((DisplayMode a, DisplayMode b) =>
b.refreshRate.compareTo(a.refreshRate));
final DisplayMode mostOptimalMode =
sameResolution.isNotEmpty ? sameResolution.first : current;
log('All display modes with same resolution: $sameResolution'
'\nMost optimal display mode: $mostOptimalMode');
return mostOptimalMode;
} catch (ex, trace) {
log('Error{ ${ex.toString()} } while selecting display mode, trace:\n$trace');
return null;
}
}
}
import 'package:flutter/material.dart';
import 'utils/display_mode_util.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await DisplayModeUtil.setOptimalDisplayMode();
runApp(MyApp());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment