responsive_builder icon indicating copy to clipboard operation
responsive_builder copied to clipboard

use the OrientationBuilder widget rather than MediaQuery.orientation

Open basnetjiten opened this issue 3 years ago • 0 comments

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);
   },
  );
  }
}

basnetjiten avatar Feb 27 '22 09:02 basnetjiten