main_page.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import 'package:flutter/material.dart';
  2. import 'package:physigo/exercises/exercises_page.dart';
  3. import 'package:physigo/friends/friends_page.dart';
  4. import 'package:physigo/home/home_page.dart';
  5. import 'package:physigo/ranking/ranking_page.dart';
  6. class MainPage extends StatefulWidget {
  7. const MainPage({Key? key}) : super(key: key);
  8. @override
  9. State<MainPage> createState() => _MainPage();
  10. }
  11. class _MainPage extends State<MainPage> {
  12. static const List<Widget> _widgets = [
  13. HomePage(),
  14. ExercisesPage(),
  15. RankingPage(),
  16. FriendsPage(),
  17. ];
  18. int _selectedIndex = 0;
  19. void _onMenuTap(int newIndex) {
  20. setState(() {
  21. _selectedIndex = newIndex;
  22. });
  23. }
  24. @override
  25. Widget build(BuildContext context) {
  26. return SafeArea(
  27. child: Scaffold(
  28. bottomNavigationBar: BottomNavigationBar(
  29. selectedItemColor: Colors.blueGrey.shade700,
  30. selectedFontSize: 18,
  31. selectedLabelStyle: const TextStyle(decoration: TextDecoration.underline),
  32. selectedIconTheme: const IconThemeData(size: 32),
  33. unselectedItemColor: Colors.black,
  34. type: BottomNavigationBarType.fixed, // need to specify fixed with more than 3 items
  35. currentIndex: _selectedIndex,
  36. onTap: _onMenuTap,
  37. items: const [
  38. BottomNavigationBarItem(icon: Icon(Icons.home), label: "Home"),
  39. BottomNavigationBarItem(icon: Icon(Icons.sports_gymnastics), label: "Exercises"),
  40. BottomNavigationBarItem(icon: Icon(Icons.emoji_events), label: "Ranking"),
  41. BottomNavigationBarItem(icon: Icon(Icons.people), label: "Social"),
  42. ],
  43. ),
  44. body: _widgets[_selectedIndex],
  45. ),
  46. );
  47. }
  48. }