Skip to content

use the OrientationBuilder widget rather than MediaQuery.orientation #39

@basnetjiten

Description

@basnetjiten

Hello I could see the use of
var orientation = MediaQuery.of(context).orientation;
on OrientationLayoutBuilder
on my use case I could not see the widget build on orientation changes on IPAD simulator. How about we refactor to use the [OrientationBuilder] (https://api.flutter.dev/flutter/widgets/OrientationBuilder-class.html) widget

I guess this would rebuild every time app’s current Orientation changes for current screen.

Here is the the code snippet in my case:

     ScreenTypeLayout(
  breakpoints:
      const ScreenBreakpoints(desktop: 900, tablet: 650, watch: 250),
  mobile: OrientationLayoutBuilder(

      portrait: (context) => const ProgramPortraitView(),
      landscape: (context) => const ProgramLandscapeView()),
  desktop
    : OrientationLayoutBuilder(
      portrait: (context) => const ProgramPortraitView(),
      landscape: (context) => const ProgramLandscapeView()),
)

Suggested OrinetationLayoutBuilder:

@override
Widget build(BuildContext context) {
return OrientationBuilder(
  builder: (context, deviceOrientation) {
    var orientation = deviceOrientation;

    if (mode != OrientationLayoutBuilderMode.portrait &&
        (orientation == Orientation.landscape ||
            mode == OrientationLayoutBuilderMode.landscape)) {
      if (landscape != null) {
        return landscape!(context);
      }
    }

    return portrait(context);
   },
  );
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions