import 'package:fikoyt_hmi_pano/apps/pages/fitness_app/models/tabIcon_data.dart'; import 'package:fikoyt_hmi_pano/apps/pages/fitness_app/training/training_screen.dart'; import 'package:flutter/material.dart'; import 'bottom_navigation_view/bottom_bar_view.dart'; import 'fitness_app_theme.dart'; import 'my_diary/my_diary_screen.dart'; class FitnessAppHomeScreen extends StatefulWidget { const FitnessAppHomeScreen({super.key}); @override _FitnessAppHomeScreenState createState() => _FitnessAppHomeScreenState(); } class _FitnessAppHomeScreenState extends State with TickerProviderStateMixin { AnimationController? animationController; List tabIconsList = TabIconData.tabIconsList; Widget tabBody = Container( color: FitnessAppTheme.background, ); @override void initState() { for (var tab in tabIconsList) { tab.isSelected = false; } tabIconsList[0].isSelected = true; animationController = AnimationController(duration: const Duration(milliseconds: 600), vsync: this); tabBody = MyDiaryScreen(animationController: animationController); super.initState(); } @override void dispose() { animationController?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Container( color: FitnessAppTheme.background, child: Scaffold( backgroundColor: Colors.transparent, body: FutureBuilder( future: getData(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (!snapshot.hasData) { return const SizedBox(); } else { return Stack( children: [ tabBody, bottomBar(), ], ); } }, ), ), ); } Future getData() async { await Future.delayed(const Duration(milliseconds: 200)); return true; } Widget bottomBar() { return Column( children: [ const Expanded( child: SizedBox(), ), BottomBarView( tabIconsList: tabIconsList, addClick: () {}, changeIndex: (int index) { if (index == 0 || index == 2) { animationController?.reverse().then((data) { if (!mounted) { return; } setState(() { tabBody = MyDiaryScreen(animationController: animationController); }); }); } else if (index == 1 || index == 3) { animationController?.reverse().then((data) { if (!mounted) { return; } setState(() { tabBody = TrainingScreen(animationController: animationController); }); }); } }, ), ], ); } }