import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:pyramid/features/rooms/rooms_page.dart'; final sidebarWidthProvider = StateProvider((ref) => 280); class PanelLayout extends ConsumerWidget { final Widget mainContent; const PanelLayout({super.key, required this.mainContent}); @override Widget build(BuildContext context, WidgetRef ref) { final sidebarWidth = ref.watch(sidebarWidthProvider); return Row( children: [ SizedBox( width: sidebarWidth, child: const RoomsPage(), ), _ResizeDivider( onDrag: (delta) { final notifier = ref.read(sidebarWidthProvider.notifier); notifier.state = (notifier.state + delta).clamp(180.0, 480.0); }, ), Expanded(child: mainContent), ], ); } } class _ResizeDivider extends StatelessWidget { final ValueChanged onDrag; const _ResizeDivider({required this.onDrag}); @override Widget build(BuildContext context) { return GestureDetector( behavior: HitTestBehavior.translucent, onHorizontalDragUpdate: (d) => onDrag(d.delta.dx), child: MouseRegion( cursor: SystemMouseCursors.resizeColumn, child: Container( width: 6, color: Theme.of(context).dividerColor, ), ), ); } }