63 lines
1.8 KiB
Dart
63 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:proxibuy/core/routes/app_router.dart';
|
|
|
|
class CustomBottomNav extends StatelessWidget {
|
|
final Widget child;
|
|
|
|
const CustomBottomNav({super.key, required this.child});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: Stack(
|
|
children: [
|
|
child,
|
|
Positioned(
|
|
bottom: 16,
|
|
left: 16,
|
|
right: 16,
|
|
child: ClipRRect(
|
|
borderRadius: BorderRadius.circular(16),
|
|
child: BottomNavigationBar(
|
|
currentIndex: _getSelectedIndex(context),
|
|
landscapeLayout: BottomNavigationBarLandscapeLayout.centered,
|
|
onTap: (index) => _onItemTapped(context, index),
|
|
items: const [
|
|
BottomNavigationBarItem(
|
|
icon: Icon(Icons.home), label: "Home"),
|
|
BottomNavigationBarItem(
|
|
icon: Icon(Icons.explore), label: "Explore"),
|
|
BottomNavigationBarItem(
|
|
icon: Icon(Icons.settings), label: "Settings"),
|
|
],
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
int _getSelectedIndex(BuildContext context) {
|
|
final String location = GoRouterState.of(context).uri.toString();
|
|
if (location.startsWith(AppRouter.explore)) return 1;
|
|
if (location.startsWith(AppRouter.setting)) return 2;
|
|
return 0;
|
|
}
|
|
|
|
void _onItemTapped(BuildContext context, int index) {
|
|
switch (index) {
|
|
case 0:
|
|
context.go(AppRouter.initial);
|
|
break;
|
|
case 1:
|
|
context.go(AppRouter.explore);
|
|
break;
|
|
case 2:
|
|
context.go(AppRouter.setting);
|
|
break;
|
|
}
|
|
}
|
|
}
|