import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../cubit/bottom_nav_cubit.dart'; import '../widgets/app_bar.dart'; import '../widgets/bottom_nav_bar.dart'; import 'discoveries_screen.dart'; import 'home_screen.dart'; import 'statistics_screen.dart'; class SkeletonScreen extends StatefulWidget { const SkeletonScreen({super.key}); @override State<SkeletonScreen> createState() => _SkeletonScreenState(); } class _SkeletonScreenState extends State<SkeletonScreen> { @override Widget build(BuildContext context) { const List<Widget> pageNavigation = <Widget>[ const HomeScreen(), const DiscoveriesScreen(), const StatisticsScreen(), ]; return BlocProvider<BottomNavCubit>( create: (BuildContext context) => BottomNavCubit(), child: BlocBuilder<BottomNavCubit, int>( builder: (BuildContext context, int state) { return GestureDetector( onHorizontalDragEnd: (dragDetail) { if (dragDetail.velocity.pixelsPerSecond.dx < 1) { context.read<BottomNavCubit>().moveNext(); } else { context.read<BottomNavCubit>().movePrevious(); } }, child: Scaffold( appBar: StandardAppBar(notifyParent: refresh), extendBodyBehindAppBar: false, body: BlocBuilder<BottomNavCubit, int>( builder: (BuildContext context, int state) { return AnimatedSwitcher( duration: const Duration(milliseconds: 300), child: pageNavigation.elementAt(state), ); }, ), bottomNavigationBar: const BottomNavBar(), backgroundColor: Theme.of(context).colorScheme.background, ), ); }, ), ); } refresh() { void rebuild(Element el) { el.markNeedsBuild(); el.visitChildren(rebuild); } (context as Element).visitChildren(rebuild); } }