@@ -101,28 +101,21 @@ class OudsNavigationBarItem {
101101 excludeFromSemantics: true ,
102102 assetName,
103103 fit: BoxFit .contain,
104- height: 26 , //sizeIcon.iconDecorativeExtraSmall,
105- width: 26 , //sizeIcon.iconDecorativeExtraSmall,
104+ height: 24 , //sizeIcon.iconDecorativeExtraSmall,
105+ width: 24 , //sizeIcon.iconDecorativeExtraSmall,
106106 colorFilter: ColorFilter .mode (
107107 modifier.getTextIconItemColor (controlState, isSelected),
108108 BlendMode .srcIn,
109109 ),
110110 );
111111
112112 return badge != null
113- ? ExcludeSemantics (
114- // Exclude badge semantics on Android to prevent duplicate announcements.
115- // The badge info is already included in the composite NavigationDestination label,
116- // so excluding semantics here ensures the correct reading order: "Label, Notification, Tab X of Y"
117- child: OudsBadge .count (
118- semanticsLabel: badge.contentDescription,
119- label: badge.count.toString (),
120- status: Negative (),
121- size: badge.hasCount
122- ? OudsBadgeSize .medium
123- : OudsBadgeSize .xsmall,
124- child: widgetIcon,
125- ),
113+ ? OudsBadge .count (
114+ semanticsLabel: badge.contentDescription,
115+ label: badge.count.toString (),
116+ status: Negative (),
117+ size: badge.hasCount ? OudsBadgeSize .medium : OudsBadgeSize .xsmall,
118+ child: widgetIcon,
126119 )
127120 : widgetIcon;
128121 }
@@ -177,20 +170,8 @@ class OudsNavigationBarItem {
177170 }) {
178171 final modifier = OudsNavigationBarStatusModifier (context);
179172
180- // Build composite label that includes badge information for accessibility.
181- // The label and badge description are combined into a single string so that
182- // accessibility tools announce both pieces of information in the correct order.
183- String destinationLabel = label;
184- if (badge != null ) {
185- destinationLabel = '$label , ${badge !.contentDescription }' ;
186- }
187-
188- // Return NavigationDestination directly without Column wrapper.
189- // The indicator is automatically managed by NavigationBar for selected items.
190- // Navigation bar applies text scaling constraints at the bar level (maxScaleFactor: 1.08 = 108%)
191- // to prevent item overflow at high zoom and ensure the 26px icon stays at 28.08px maximum.
192173 return NavigationDestination (
193- label: destinationLabel ,
174+ label: label ,
194175 icon: _buildBadgeIconNavigationDestination (
195176 context,
196177 icon,
@@ -226,13 +207,8 @@ class OudsNavigationBarItem {
226207 }) {
227208 final modifier = OudsNavigationBarStatusModifier (context);
228209
229- final tooltip = badge != null
230- ? '$label , ${badge !.contentDescription }'
231- : label;
232-
233210 return BottomNavigationBarItem (
234211 label: label,
235- tooltip: tooltip,
236212 icon: _buildBadgeIconBottomNavigationBarItemScaled (
237213 context,
238214 icon,
@@ -308,8 +284,8 @@ class OudsNavigationBarItem {
308284 excludeFromSemantics: true ,
309285 assetName,
310286 fit: BoxFit .contain,
311- height: 26 , //sizeIcon.iconDecorativeExtraSmall ,
312- width: 26 , //sizeIcon.iconDecorativeExtraSmall ,
287+ height: 24 ,
288+ width: 24 ,
313289 colorFilter: ColorFilter .mode (
314290 modifier.getTextIconItemColor (controlState, isSelected),
315291 BlendMode .srcIn,
@@ -324,19 +300,14 @@ class OudsNavigationBarItem {
324300 // Fixed 2px spacing between indicator and icon to ensure consistent layout
325301 const SizedBox (height: 2 ),
326302 badge != null
327- ? ExcludeSemantics (
328- // Exclude badge semantics on iOS to prevent duplicate announcements.
329- // The badge info is included in the BottomNavigationBarItem tooltip, so excluding here
330- // ensures accessibility tools don't announce the notification twice.
331- child: OudsBadge .count (
332- semanticsLabel: badge.contentDescription,
333- label: badge.count.toString (),
334- status: Negative (),
335- size: badge.hasCount
336- ? OudsBadgeSize .medium
337- : OudsBadgeSize .xsmall,
338- child: widgetIcon,
339- ),
303+ ? OudsBadge .count (
304+ semanticsLabel: badge.contentDescription,
305+ label: badge.count.toString (),
306+ status: Negative (),
307+ size: badge.hasCount
308+ ? OudsBadgeSize .medium
309+ : OudsBadgeSize .xsmall,
310+ child: widgetIcon,
340311 )
341312 : widgetIcon,
342313 ];
0 commit comments