73 lines
2.0 KiB
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,
|
|
),
|
|
);
|
|
}
|
|
}
|