import 'package:flutter/material.dart'; enum DisplayType { desktop, mobile, } const _desktopPortraitBreakpoint = 800.0; const _desktopLandscapeBreakpoint = 1000.0; /// Returns the [DisplayType] for the current screen. This app only supports /// mobile and desktop layouts, and as such we only have one breakpoint. DisplayType displayTypeOf(BuildContext context) { final orientation = MediaQuery.of(context).orientation; final width = MediaQuery.of(context).size.width; if ((orientation == Orientation.landscape && width > _desktopLandscapeBreakpoint) || (orientation == Orientation.portrait && width > _desktopPortraitBreakpoint)) { return DisplayType.desktop; } else { return DisplayType.mobile; } } /// Returns a boolean if we are in a display of [DisplayType.desktop]. Used to /// build adaptive and responsive layouts. bool isDisplayDesktop(BuildContext context) { return displayTypeOf(context) == DisplayType.desktop; } /// Returns a boolean if we are in a display of [DisplayType.desktop] but less /// than [_desktopLandscapeBreakpoint] width. Used to build adaptive and responsive layouts. bool isDisplaySmallDesktop(BuildContext context) { return isDisplayDesktop(context) && MediaQuery.of(context).size.width < _desktopLandscapeBreakpoint; }