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'; import '../../models/enums/translation_keys.dart'; class AppBottomNavigationBar extends StatefulWidget { final Function(int index) onPressed; const AppBottomNavigationBar({Key key, @required this.onPressed}) : super(key: key); @override State createState() => _AppBottomNavigationBarState(); } class _AppBottomNavigationBarState extends State { int _selectedIndex = 0; @override Widget build(BuildContext context) { return ClipRRect( 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: [ 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, ), ), label: context.translate(label), ); } }