import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:go_router/go_router.dart'; import 'package:solian/theme.dart'; import 'package:solian/widgets/app_bar_leading.dart'; import 'package:solian/widgets/app_bar_title.dart'; import 'package:solian/widgets/sidebar/sidebar_placeholder.dart'; class SidebarShell extends StatelessWidget { final bool showAppBar; final GoRouterState state; final Widget child; final bool sidebarFirst; final Widget? sidebar; const SidebarShell({ super.key, required this.child, required this.state, this.showAppBar = true, this.sidebarFirst = false, this.sidebar, }); List buildContent(BuildContext context) { return [ Flexible( flex: 2, child: child, ), if (SolianTheme.isExtraLargeScreen(context)) const VerticalDivider(thickness: 0.3, width: 1), if (SolianTheme.isExtraLargeScreen(context)) Flexible( flex: 1, child: sidebar ?? const SidebarPlaceholder(), ), ]; } @override Widget build(BuildContext context) { return Scaffold( appBar: showAppBar ? AppBar( leading: AppBarLeadingButton.adaptive(context), title: AppBarTitle(state.topRoute?.name?.tr ?? 'page'.tr), centerTitle: false, toolbarHeight: SolianTheme.toolbarHeight(context), ) : null, body: SolianTheme.isLargeScreen(context) ? Row( children: sidebarFirst ? buildContent(context).reversed.toList() : buildContent(context), ) : child, ); } }