made a small prototype with a navbar
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'strings.dart';
|
||||
|
||||
class MainScaffold extends StatelessWidget {
|
||||
final Widget child;
|
||||
|
||||
const MainScaffold({super.key, required this.child});
|
||||
|
||||
int _locationToIndex(String location) {
|
||||
switch (location) {
|
||||
case '/': return 0;
|
||||
case '/add': return 1;
|
||||
case '/flashcards': return 2;
|
||||
case '/leaderboard': return 3;
|
||||
case '/settings': return 4;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final location = GoRouterState.of(context).uri.toString();
|
||||
final currentIndex = _locationToIndex(location);
|
||||
|
||||
return Scaffold(
|
||||
body: child,
|
||||
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
type: BottomNavigationBarType.fixed,
|
||||
currentIndex: currentIndex,
|
||||
|
||||
onTap: (index) {
|
||||
switch (index) {
|
||||
case 0: context.go('/'); break;
|
||||
case 1: context.go('/add'); break;
|
||||
case 2: context.go('/flashcards'); break;
|
||||
case 3: context.go('/leaderboard'); break;
|
||||
case 4: context.go('/settings'); break;
|
||||
}
|
||||
},
|
||||
|
||||
items: [
|
||||
BottomNavigationBarItem(icon: Icon(Icons.list), label: Strings.list),
|
||||
BottomNavigationBarItem(icon: Icon(Icons.add), label: Strings.add),
|
||||
BottomNavigationBarItem(icon: Icon(Icons.repeat), label: Strings.flashcards),
|
||||
BottomNavigationBarItem(icon: Icon(Icons.leaderboard), label: Strings.leaderboard),
|
||||
BottomNavigationBarItem(icon: Icon(Icons.settings), label: Strings.settings),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user