@@ -7,110 +7,58 @@ class _BottomNavStyle3 extends StatelessWidget {
77 }) : super (key: key);
88 final _NavBarEssentials navBarEssentials;
99
10- Widget _buildItem (final PersistentBottomNavBarItem item,
11- final bool isSelected, final double ? height) =>
12- navBarEssentials.navBarHeight == 0
13- ? const SizedBox .shrink ()
14- : AnimatedContainer (
15- width: 100 ,
16- height: height! / 1.0 ,
17- duration: navBarEssentials.itemAnimationProperties.duration,
18- curve: navBarEssentials.itemAnimationProperties.curve,
19- alignment: Alignment .center,
20- child: AnimatedContainer (
21- duration: navBarEssentials.itemAnimationProperties.duration,
22- curve: navBarEssentials.itemAnimationProperties.curve,
23- alignment: Alignment .center,
24- height: height / 1.0 ,
25- child: Column (
26- mainAxisAlignment: MainAxisAlignment .center,
27- children: < Widget > [
28- Expanded (
29- child: IconTheme (
30- data: IconThemeData (
31- size: item.iconSize,
32- color: isSelected
33- ? (item.activeColorSecondary ??
34- item.activeColorPrimary)
35- : item.inactiveColorPrimary ??
36- item.activeColorPrimary),
37- child: isSelected
38- ? item.icon
39- : item.inactiveIcon ?? item.icon,
10+ Widget _buildItem (final PersistentBottomNavBarItem item, final bool isSelected, final double ? height) => navBarEssentials.navBarHeight == 0
11+ ? const SizedBox .shrink ()
12+ : AnimatedContainer (
13+ width: 100 ,
14+ height: height! / 1.0 ,
15+ duration: navBarEssentials.itemAnimationProperties.duration,
16+ curve: navBarEssentials.itemAnimationProperties.curve,
17+ alignment: Alignment .center,
18+ child: AnimatedContainer (
19+ duration: navBarEssentials.itemAnimationProperties.duration,
20+ curve: navBarEssentials.itemAnimationProperties.curve,
21+ alignment: Alignment .center,
22+ height: height / 1.0 ,
23+ child: Column (
24+ mainAxisAlignment: MainAxisAlignment .center,
25+ children: < Widget > [
26+ Expanded (child: isSelected ? item.icon : item.inactiveIcon ?? item.icon),
27+ if (item.title == null )
28+ const SizedBox .shrink ()
29+ else
30+ Padding (
31+ padding: const EdgeInsets .only (top: 15 ),
32+ child: Material (
33+ type: MaterialType .transparency,
34+ child: DefaultTextStyle .merge (
35+ style: TextStyle (
36+ color: item.textStyle != null
37+ ? item.textStyle! .apply (color: isSelected ? (item.activeColorSecondary ?? item.activeColorPrimary) : item.inactiveColorPrimary) as Color ?
38+ : isSelected
39+ ? (item.activeColorSecondary ?? item.activeColorPrimary)
40+ : item.inactiveColorPrimary,
41+ fontWeight: FontWeight .w400,
42+ fontSize: 12 ),
43+ child: FittedBox (child: Text (item.title! )),
4044 ),
4145 ),
42- if (item.title == null )
43- const SizedBox .shrink ()
44- else
45- Padding (
46- padding: const EdgeInsets .only (top: 15 ),
47- child: Material (
48- type: MaterialType .transparency,
49- child: DefaultTextStyle .merge (
50- style: TextStyle (
51- color: item.textStyle != null
52- ? item.textStyle! .apply (
53- color: isSelected
54- ? (item.activeColorSecondary ??
55- item.activeColorPrimary)
56- : item.inactiveColorPrimary)
57- as Color ?
58- : isSelected
59- ? (item.activeColorSecondary ??
60- item.activeColorPrimary)
61- : item.inactiveColorPrimary,
62- fontWeight: FontWeight .w400,
63- fontSize: 12 ),
64- child: FittedBox (child: Text (item.title! )),
65- ),
66- ),
67- ),
68- ],
69- ),
70- ),
71- );
46+ ),
47+ ],
48+ ),
49+ ),
50+ );
7251
7352 @override
7453 Widget build (final BuildContext context) {
75- final Color selectedItemActiveColor = navBarEssentials
76- .items[navBarEssentials.selectedIndex].activeColorPrimary;
77- final double itemWidth = (MediaQuery .of (context).size.width -
78- ((navBarEssentials.padding.left + navBarEssentials.padding.right) +
79- (navBarEssentials.margin.left +
80- navBarEssentials.margin.right))) /
81- navBarEssentials.items.length;
54+ final Color selectedItemActiveColor = navBarEssentials.items[navBarEssentials.selectedIndex].activeColorPrimary;
55+ final double itemWidth = (MediaQuery .of (context).size.width - ((navBarEssentials.padding.left + navBarEssentials.padding.right) + (navBarEssentials.margin.left + navBarEssentials.margin.right))) / navBarEssentials.items.length;
8256 return Container (
8357 width: double .infinity,
8458 height: navBarEssentials.navBarHeight,
8559 padding: navBarEssentials.padding,
8660 child: Column (
8761 children: < Widget > [
88- Row (
89- children: < Widget > [
90- AnimatedContainer (
91- duration: navBarEssentials.itemAnimationProperties.duration,
92- curve: navBarEssentials.itemAnimationProperties.curve,
93- color: Colors .transparent,
94- width: navBarEssentials.selectedIndex == 0
95- ? MediaQuery .of (context).size.width * 0.0
96- : itemWidth * navBarEssentials.selectedIndex,
97- height: 4 ,
98- ),
99- Flexible (
100- child: AnimatedContainer (
101- duration: navBarEssentials.itemAnimationProperties.duration,
102- curve: navBarEssentials.itemAnimationProperties.curve,
103- width: itemWidth,
104- height: 4 ,
105- alignment: Alignment .center,
106- decoration: BoxDecoration (
107- color: selectedItemActiveColor,
108- borderRadius: BorderRadius .circular (100 ),
109- ),
110- ),
111- )
112- ],
113- ),
11462 Expanded (
11563 child: Padding (
11664 padding: const EdgeInsets .only (top: 5 ),
@@ -122,25 +70,18 @@ class _BottomNavStyle3 extends StatelessWidget {
12270 child: GestureDetector (
12371 onTap: () {
12472 if (index != navBarEssentials.selectedIndex) {
125- navBarEssentials.items[index].iconAnimationController
126- ? .forward ();
127- navBarEssentials.items[navBarEssentials.selectedIndex]
128- .iconAnimationController
129- ? .reverse ();
73+ navBarEssentials.items[index].iconAnimationController? .forward ();
74+ navBarEssentials.items[navBarEssentials.selectedIndex].iconAnimationController? .reverse ();
13075 }
13176 if (navBarEssentials.items[index].onPressed != null ) {
132- navBarEssentials.items[index].onPressed !(
133- navBarEssentials.selectedScreenBuildContext);
77+ navBarEssentials.items[index].onPressed !(navBarEssentials.selectedScreenBuildContext);
13478 } else {
13579 navBarEssentials.onItemSelected? .call (index);
13680 }
13781 },
13882 child: Container (
13983 color: Colors .transparent,
140- child: _buildItem (
141- item,
142- navBarEssentials.selectedIndex == index,
143- navBarEssentials.navBarHeight),
84+ child: _buildItem (item, navBarEssentials.selectedIndex == index, navBarEssentials.navBarHeight),
14485 ),
14586 ),
14687 );
0 commit comments