diff --git a/lib/nav_bar_styles/style_3_bottom_nav_bar.widget.dart b/lib/nav_bar_styles/style_3_bottom_nav_bar.widget.dart index 046d059c..414729bc 100644 --- a/lib/nav_bar_styles/style_3_bottom_nav_bar.widget.dart +++ b/lib/nav_bar_styles/style_3_bottom_nav_bar.widget.dart @@ -7,110 +7,58 @@ class _BottomNavStyle3 extends StatelessWidget { }) : super(key: key); final _NavBarEssentials navBarEssentials; - Widget _buildItem(final PersistentBottomNavBarItem item, - final bool isSelected, final double? height) => - navBarEssentials.navBarHeight == 0 - ? const SizedBox.shrink() - : AnimatedContainer( - width: 100, - height: height! / 1.0, - duration: navBarEssentials.itemAnimationProperties.duration, - curve: navBarEssentials.itemAnimationProperties.curve, - alignment: Alignment.center, - child: AnimatedContainer( - duration: navBarEssentials.itemAnimationProperties.duration, - curve: navBarEssentials.itemAnimationProperties.curve, - alignment: Alignment.center, - height: height / 1.0, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: IconTheme( - data: IconThemeData( - size: item.iconSize, - color: isSelected - ? (item.activeColorSecondary ?? - item.activeColorPrimary) - : item.inactiveColorPrimary ?? - item.activeColorPrimary), - child: isSelected - ? item.icon - : item.inactiveIcon ?? item.icon, + Widget _buildItem(final PersistentBottomNavBarItem item, final bool isSelected, final double? height) => navBarEssentials.navBarHeight == 0 + ? const SizedBox.shrink() + : AnimatedContainer( + width: 100, + height: height! / 1.0, + duration: navBarEssentials.itemAnimationProperties.duration, + curve: navBarEssentials.itemAnimationProperties.curve, + alignment: Alignment.center, + child: AnimatedContainer( + duration: navBarEssentials.itemAnimationProperties.duration, + curve: navBarEssentials.itemAnimationProperties.curve, + alignment: Alignment.center, + height: height / 1.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded(child: isSelected ? item.icon : item.inactiveIcon ?? item.icon), + if (item.title == null) + const SizedBox.shrink() + else + Padding( + padding: const EdgeInsets.only(bottom: 6), + child: Material( + type: MaterialType.transparency, + child: DefaultTextStyle.merge( + style: TextStyle( + color: item.textStyle != null + ? item.textStyle!.apply(color: isSelected ? (item.activeColorSecondary ?? item.activeColorPrimary) : item.inactiveColorPrimary) as Color? + : isSelected + ? (item.activeColorSecondary ?? item.activeColorPrimary) + : item.inactiveColorPrimary, + fontWeight: FontWeight.w400, + fontSize: 12), + child: FittedBox(child: Text(item.title!)), ), ), - if (item.title == null) - const SizedBox.shrink() - else - Padding( - padding: const EdgeInsets.only(top: 15), - child: Material( - type: MaterialType.transparency, - child: DefaultTextStyle.merge( - style: TextStyle( - color: item.textStyle != null - ? item.textStyle!.apply( - color: isSelected - ? (item.activeColorSecondary ?? - item.activeColorPrimary) - : item.inactiveColorPrimary) - as Color? - : isSelected - ? (item.activeColorSecondary ?? - item.activeColorPrimary) - : item.inactiveColorPrimary, - fontWeight: FontWeight.w400, - fontSize: 12), - child: FittedBox(child: Text(item.title!)), - ), - ), - ), - ], - ), - ), - ); + ), + ], + ), + ), + ); @override Widget build(final BuildContext context) { - final Color selectedItemActiveColor = navBarEssentials - .items[navBarEssentials.selectedIndex].activeColorPrimary; - final double itemWidth = (MediaQuery.of(context).size.width - - ((navBarEssentials.padding.left + navBarEssentials.padding.right) + - (navBarEssentials.margin.left + - navBarEssentials.margin.right))) / - navBarEssentials.items.length; + final Color selectedItemActiveColor = navBarEssentials.items[navBarEssentials.selectedIndex].activeColorPrimary; + final double itemWidth = (MediaQuery.of(context).size.width - ((navBarEssentials.padding.left + navBarEssentials.padding.right) + (navBarEssentials.margin.left + navBarEssentials.margin.right))) / navBarEssentials.items.length; return Container( width: double.infinity, height: navBarEssentials.navBarHeight, padding: navBarEssentials.padding, child: Column( children: [ - Row( - children: [ - AnimatedContainer( - duration: navBarEssentials.itemAnimationProperties.duration, - curve: navBarEssentials.itemAnimationProperties.curve, - color: Colors.transparent, - width: navBarEssentials.selectedIndex == 0 - ? MediaQuery.of(context).size.width * 0.0 - : itemWidth * navBarEssentials.selectedIndex, - height: 4, - ), - Flexible( - child: AnimatedContainer( - duration: navBarEssentials.itemAnimationProperties.duration, - curve: navBarEssentials.itemAnimationProperties.curve, - width: itemWidth, - height: 4, - alignment: Alignment.center, - decoration: BoxDecoration( - color: selectedItemActiveColor, - borderRadius: BorderRadius.circular(100), - ), - ), - ) - ], - ), Expanded( child: Padding( padding: const EdgeInsets.only(top: 5), @@ -122,25 +70,18 @@ class _BottomNavStyle3 extends StatelessWidget { child: GestureDetector( onTap: () { if (index != navBarEssentials.selectedIndex) { - navBarEssentials.items[index].iconAnimationController - ?.forward(); - navBarEssentials.items[navBarEssentials.selectedIndex] - .iconAnimationController - ?.reverse(); + navBarEssentials.items[index].iconAnimationController?.forward(); + navBarEssentials.items[navBarEssentials.selectedIndex].iconAnimationController?.reverse(); } if (navBarEssentials.items[index].onPressed != null) { - navBarEssentials.items[index].onPressed!( - navBarEssentials.selectedScreenBuildContext); + navBarEssentials.items[index].onPressed!(navBarEssentials.selectedScreenBuildContext); } else { navBarEssentials.onItemSelected?.call(index); } }, child: Container( color: Colors.transparent, - child: _buildItem( - item, - navBarEssentials.selectedIndex == index, - navBarEssentials.navBarHeight), + child: _buildItem(item, navBarEssentials.selectedIndex == index, navBarEssentials.navBarHeight), ), ), );