|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import 'package:ansu_ui/styles/as_colors.dart';
|
|
|
|
|
|
|
|
class ASNavigationBar extends StatefulWidget {
|
|
|
|
final List<BottomNavigationBarItem> items;
|
|
|
|
final TabController controller;
|
|
|
|
ASNavigationBar({Key key, @required this.items, this.controller})
|
|
|
|
: super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_ASNavigationBarState createState() => _ASNavigationBarState();
|
|
|
|
}
|
|
|
|
|
|
|
|
class _ASNavigationBarState extends State<ASNavigationBar> {
|
|
|
|
int _currentIndex = 0;
|
|
|
|
updateBar() => setState(() => _currentIndex = widget.controller.index);
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
widget.controller.addListener(updateBar);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
widget.controller.removeListener(updateBar);
|
|
|
|
super.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return BottomNavigationBar(
|
|
|
|
items: widget.items,
|
|
|
|
elevation: 0,
|
|
|
|
backgroundColor: kBackgroundColor,
|
|
|
|
type: BottomNavigationBarType.fixed,
|
|
|
|
currentIndex: _currentIndex,
|
|
|
|
selectedLabelStyle: TextStyle(fontSize: 12.sp),
|
|
|
|
unselectedLabelStyle: TextStyle(fontSize: 12.sp),
|
|
|
|
selectedItemColor: kTextColor,
|
|
|
|
unselectedItemColor: kTextSubColor,
|
|
|
|
onTap: (index) =>
|
|
|
|
widget.controller.animateTo(index, curve: Curves.easeInOutCubic),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|