admin管理员组

文章数量:1287579

This is HomeScreen.dart file where navigation bar is implemented to show. It was working before taking tdee data from another screen in home screen but now when tdee (total daily energy expenditure) data is taken it doesn't show navbar.

import 'package:getfit/screens/ProfileScreen.dart';
import 'package:getfit/screens/ReportScreen.dart';
import 'package:getfit/widgets/CustomBottomNavBar.dart';
import 'CategoryScreen.dart';
import 'package:pedometer/pedometer.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomeScreen(),
      theme: ThemeData(fontFamily: 'AgencyFB'), // Global font style
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  int _selectedIndex = 0; // Tracks selected bottom tab index
  late double tdee; // Total Daily Energy Expenditure Variable

  late List<Widget> _screens = [
    HomeContent(tdee: tdee),
    CategoryScreen(),
    ReportScreen(),
    ProfileScreen(),
  ];

  // Method to save Total Daily Energy Expenditure (TDEE)
  Future<double> _storedTDEE() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    return prefs.getDouble('tdee') ?? 0;
  }

  // Method to setState of selected index
  void _onTabSelected(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: CustomBottomNavBar(
        selectedIndex: _selectedIndex,
        onTabSelected: _onTabSelected,
      ),
      body: IndexedStack(
        index: _selectedIndex,
        children: _screens,
      ), // Show selected screen
    );
  }
}

This is CustomNavigationBar.dart file where navigation bar is created.


class CustomBottomNavBar extends StatefulWidget {
  final int selectedIndex; // Tracks current selected index
  final Function(int) onTabSelected; // Callback to notify parent widget

  const CustomBottomNavBar({
    Key? key,
    required this.onTabSelected,
    required this.selectedIndex,
  }) : super(key: key);

  @override
  _CustomBottomNavBarState createState() => _CustomBottomNavBarState();
}

class _CustomBottomNavBarState extends State<CustomBottomNavBar> {
  @override
  Widget build(BuildContext context) {
    return BottomNavigationBar(
      backgroundColor: const Color.fromRGBO(57, 57, 57, 1), // Background color
      selectedItemColor: Colors.white, // Selected icon color
      unselectedItemColor: Colors.grey, // Unselected icon color
      currentIndex: widget.selectedIndex, // Track selected index
      onTap: widget.onTabSelected, // Callback when tab is tapped
      type: BottomNavigationBarType.fixed, // Keeps labels visible
      items: const [
        BottomNavigationBarItem(
          icon: Icon(Icons.home),
          label: "Home",
        ),
        BottomNavigationBarItem(
          icon: Icon(Icons.sports),
          label: "Category",
        ),
        BottomNavigationBarItem(
          icon: Icon(Icons.bar_chart),
          label: "Report",
        ),
        BottomNavigationBarItem(
          icon: Icon(Icons.person),
          label: "Profile",
        ),
      ],
    );
  }
}

本文标签: