// lib/widgets/landscape_shell.dart // // Reusable two-panel landscape scaffold for all desktop/wide screens. // Left panel uses the brand dark-blue gradient; right panel is the content area. // // Usage: // LandscapeShell( // leftPanel: MyLeftContent(), // rightPanel: MyRightContent(), // ) import 'package:flutter/material.dart'; import '../core/app_decoration.dart'; class LandscapeShell extends StatelessWidget { final Widget leftPanel; final Widget rightPanel; /// Flex weight for left panel (default 2 → ~40% of width) final int leftFlex; /// Flex weight for right panel (default 3 → ~60% of width) final int rightFlex; /// Optional background color for right panel (defaults to scaffold background) final Color? rightBackground; const LandscapeShell({ Key? key, required this.leftPanel, required this.rightPanel, this.leftFlex = 2, this.rightFlex = 3, this.rightBackground, }) : super(key: key); @override Widget build(BuildContext context) { final bg = rightBackground ?? Theme.of(context).scaffoldBackgroundColor; return Row( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ // ── Left panel — dark blue gradient ────────────────────────────── Flexible( flex: leftFlex, child: RepaintBoundary( child: Container( decoration: AppDecoration.blueGradient, child: leftPanel, ), ), ), // ── Right panel — content area ──────────────────────────────────── Flexible( flex: rightFlex, child: RepaintBoundary( child: ColoredBox( color: bg, child: rightPanel, ), ), ), ], ); } }