Skip to content

Commit 31f70f0

Browse files
committed
Adjust style 3
1 parent 071ba78 commit 31f70f0

1 file changed

Lines changed: 45 additions & 104 deletions

File tree

lib/nav_bar_styles/style_3_bottom_nav_bar.widget.dart

Lines changed: 45 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)