78 lines
1.8 KiB
Dart
78 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:go_router/go_router.dart';
|
|
|
|
class HomeScreenWithNavBar extends StatefulWidget {
|
|
const HomeScreenWithNavBar({
|
|
super.key,
|
|
required this.initIndex,
|
|
required this.child,
|
|
this.listController,
|
|
});
|
|
|
|
final int initIndex;
|
|
final Widget child;
|
|
// used to get back to top
|
|
final ScrollController? listController;
|
|
|
|
@override
|
|
State<HomeScreenWithNavBar> createState() => _HomeScreenWithNavBarState();
|
|
}
|
|
|
|
class _HomeScreenWithNavBarState extends State<HomeScreenWithNavBar> {
|
|
// int _selectedIndex = 0;
|
|
|
|
// @override
|
|
// void initState() {
|
|
// super.initState();
|
|
// _selectedIndex = widget.initIndex;
|
|
// }
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: widget.child,
|
|
bottomNavigationBar: BottomNavigationBar(
|
|
backgroundColor:
|
|
Theme.of(context).bottomNavigationBarTheme.backgroundColor,
|
|
items: const [
|
|
BottomNavigationBarItem(
|
|
icon: Icon(Icons.message),
|
|
label: '消息',
|
|
),
|
|
BottomNavigationBarItem(
|
|
icon: Icon(Icons.contacts),
|
|
label: '通讯录',
|
|
),
|
|
BottomNavigationBarItem(
|
|
icon: Icon(Icons.star),
|
|
label: '更多',
|
|
),
|
|
],
|
|
onTap: (int index) => _onItemTapped(index, context),
|
|
currentIndex: widget.initIndex,
|
|
),
|
|
);
|
|
}
|
|
|
|
void _onItemTapped(int index, BuildContext context) {
|
|
// setState(() {
|
|
// _selectedIndex = index;
|
|
// });
|
|
|
|
switch (index) {
|
|
case 0:
|
|
GoRouter.of(context).go('/chat');
|
|
break;
|
|
|
|
case 1:
|
|
GoRouter.of(context).go('/contact');
|
|
break;
|
|
|
|
case 2:
|
|
GoRouter.of(context).go('/more');
|
|
break;
|
|
}
|
|
}
|
|
}
|