import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../theme.dart'; import 'pv_icons.dart'; /// Shared chrome for the landscape flight overlays (Capture modes, Camera /// settings, Settings menu). Locks landscape/immersive like the HUD, paints the /// dark app ground, and provides a title row + close button. class FlightOverlayScaffold extends StatefulWidget { const FlightOverlayScaffold({ super.key, required this.title, required this.body, this.leading, this.trailing, this.padded = true, }); final String title; final Widget body; final Widget? leading; final Widget? trailing; final bool padded; @override State createState() => _FlightOverlayScaffoldState(); } class _FlightOverlayScaffoldState extends State { @override void initState() { super.initState(); SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, ]); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFF0A1120), body: SafeArea( child: Padding( padding: widget.padded ? const EdgeInsets.fromLTRB(16, 12, 16, 12) : EdgeInsets.zero, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Padding( padding: widget.padded ? EdgeInsets.zero : const EdgeInsets.fromLTRB(16, 12, 16, 8), child: Row(children: [ if (widget.leading != null) ...[widget.leading!, const SizedBox(width: 10)], Text(widget.title, style: const TextStyle(fontFamily: PV.fontSans, fontSize: 16, fontWeight: FontWeight.w700, color: Glass.ink)), const Spacer(), if (widget.trailing != null) ...[widget.trailing!, const SizedBox(width: 8)], GestureDetector( onTap: () => Navigator.of(context).maybePop(), child: Container( width: 30, height: 30, decoration: BoxDecoration(color: const Color(0x1FFFFFFF), borderRadius: BorderRadius.circular(9)), alignment: Alignment.center, child: const PVIcon('close', size: 17, color: Glass.ink), ), ), ]), ), const SizedBox(height: 10), Expanded(child: widget.body), ], ), ), ), ); } }