HopSpotFrontend/lib/pages/navigation_controller_page.dart

73 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:pvt15/pages/leaderboard_page.dart';
import 'package:pvt15/pages/game_category_page.dart';
class NavigationControllerPage extends StatefulWidget {
final GoogleSignInAccount? user;
const NavigationControllerPage({super.key, required this.user});
@override
State<NavigationControllerPage> createState() => _NavigationControllerPage();
}
class _NavigationControllerPage extends State<NavigationControllerPage> {
int _currentIndex = 0;
late List<Widget> _pages;
@override
void initState() {
super.initState();
_buildPages();
}
@override
void didUpdateWidget(covariant NavigationControllerPage oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.user != oldWidget.user) {
_buildPages();
}
}
void _buildPages() {
_pages = [
GameCategoryPage(user: widget.user),
LeaderboardPage(user: widget.user),
];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _pages[_currentIndex],
bottomNavigationBar: NavigationBar(
height: 65,
selectedIndex: _currentIndex,
backgroundColor: const Color(0xFFF6E9FF),
onDestinationSelected: (i) {
if (i < _pages.length) {
setState(() {
_currentIndex = i;
});
}
},
indicatorColor: const Color(0xFFAB47BC).withValues(alpha: 0.2),
destinations: const [
NavigationDestination(
icon: Icon(Icons.sports_esports_outlined, color: Color(0xFF9C27B0)),
selectedIcon: Icon(Icons.sports_esports, color: Color(0xFFA800DB)),
label: 'Spel',
),
NavigationDestination(
icon: Icon(Icons.leaderboard_outlined, color: Color(0xFF9C27B0)),
selectedIcon: Icon(Icons.leaderboard, color: Color(0xFFA800DB)),
label: 'Topplista',
),
],
labelBehavior: NavigationDestinationLabelBehavior.alwaysShow,
),
);
}
}