You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/new_views/common_widgets/app_bottom_nav_bar.dart

62 lines
2.3 KiB
Dart

2 years ago
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
2 years ago
2 years ago
import '../../models/enums/translation_keys.dart';
2 years ago
2 years ago
class AppBottomNavigationBar extends StatefulWidget {
final Function(int index) onPressed;
const AppBottomNavigationBar({Key key, @required this.onPressed}) : super(key: key);
2 years ago
@override
2 years ago
State<AppBottomNavigationBar> createState() => _AppBottomNavigationBarState();
2 years ago
}
2 years ago
class _AppBottomNavigationBarState extends State<AppBottomNavigationBar> {
2 years ago
int _selectedIndex = 0;
@override
Widget build(BuildContext context) {
return ClipRRect(
2 years ago
borderRadius: const BorderRadius.only(topLeft: Radius.circular(20.0), topRight: Radius.circular(20.0)),
child: Container(
height: 100.toScreenHeight,
decoration: BoxDecoration(
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14)],
),
child: BottomNavigationBar(
items: <BottomNavigationBarItem>[
navBarItem(index: 0, iconName: "overview", label: TranslationKeys.overview),
navBarItem(index: 1, iconName: "requests", label: TranslationKeys.myRequests),
navBarItem(index: 2, iconName: "assets", label: TranslationKeys.myAssets),
navBarItem(index: 3, iconName: "message", label: TranslationKeys.contactUs),
],
currentIndex: _selectedIndex,
selectedFontSize: 12,
onTap: (index) {
setState(() {
_selectedIndex = index;
});
widget.onPressed(index);
},
),
),
);
}
BottomNavigationBarItem navBarItem({@required int index, @required String iconName, @required TranslationKeys label}) {
return BottomNavigationBarItem(
icon: Padding(
padding: EdgeInsets.symmetric(vertical: 10.toScreenHeight),
child: SvgPicture.asset(
'assets/images/$iconName.svg',
width: 24.toScreenWidth,
color: _selectedIndex == index ? Theme.of(context).bottomNavigationBarTheme.selectedItemColor : Theme.of(context).bottomNavigationBarTheme.unselectedItemColor,
2 years ago
),
),
label: context.translate(label),
2 years ago
);
}
}