import 'package:flutter/material.dart'; enum FocusPage { FIRST, SECOND } class AdaptivePageLayout extends StatelessWidget { final Widget firstScaffold; final Widget secondScaffold; final FocusPage primaryPage; final double minWidth; static const double defaultMinWidth = 400; static bool columnMode(BuildContext context) => MediaQuery.of(context).size.width > 2 * defaultMinWidth; AdaptivePageLayout( {this.firstScaffold, this.secondScaffold, this.primaryPage = FocusPage.FIRST, this.minWidth = defaultMinWidth, Key key}) : super(key: key); @override Widget build(BuildContext context) { return OrientationBuilder(builder: (context, orientation) { if (orientation == Orientation.portrait || columnMode(context)) if (primaryPage == FocusPage.FIRST) return firstScaffold; else return secondScaffold; return Row( children: [ Container( width: minWidth, child: firstScaffold, ), Container( width: 1, color: Color(0xFFE8E8E8), ), Expanded( child: Container( child: secondScaffold, ), ) ], ); }); } }