import 'package:animations/animations.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:linkdy/widgets/system_overlay_style.dart'; import 'package:linkdy/config/app_screens.dart'; import 'package:linkdy/providers/router_provider.dart'; class Layout extends ConsumerWidget { final GoRouterState state; final Widget child; const Layout({ Key? key, required this.state, required this.child, }) : super(key: key); @override Widget build(BuildContext context, WidgetRef ref) { final screenIndex = appScreens.map((s) => s.route).toList().indexOf("/${state.matchedLocation.split("/")[1]}"); return OverlayStyle( child: Scaffold( body: PageTransitionSwitcher( duration: const Duration(milliseconds: 200), transitionBuilder: (child, primaryAnimation, secondaryAnimation) => FadeThroughTransition( animation: primaryAnimation, secondaryAnimation: secondaryAnimation, child: child, ), child: child, ), bottomNavigationBar: NavigationBar( onDestinationSelected: (s) => ref.watch(routerProvider).replace(appScreens[s].route), selectedIndex: screenIndex, destinations: appScreens .map( (screen) => NavigationDestination( icon: Icon(screen.icon), label: screen.name, ), ) .toList(), ), ), ); } }