Skip to content

Instantly share code, notes, and snippets.

@dJani97
Created March 28, 2021 13:44

Revisions

  1. dJani97 created this gist Mar 28, 2021.
    40 changes: 40 additions & 0 deletions display_mode_util.dart
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    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;
    }
    }
    }
    8 changes: 8 additions & 0 deletions main.dart
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    import 'package:flutter/material.dart';
    import 'utils/display_mode_util.dart';

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await DisplayModeUtil.setOptimalDisplayMode();
    runApp(MyApp());
    }