Unverified Commit 9608a64d authored by Kate Lovett's avatar Kate Lovett Committed by GitHub

Revert "Remove BottomNavigationBarItem.title deprecation" (#91930)

parent 99c8dd56
...@@ -254,6 +254,7 @@ class CupertinoTabBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -254,6 +254,7 @@ class CupertinoTabBar extends StatelessWidget implements PreferredSizeWidget {
Expanded( Expanded(
child: Center(child: active ? item.activeIcon : item.icon), child: Center(child: active ? item.activeIcon : item.icon),
), ),
if (item.title != null) item.title!,
if (item.label != null) Text(item.label!), if (item.label != null) Text(item.label!),
]; ];
} }
......
...@@ -185,8 +185,9 @@ class BottomNavigationBar extends StatefulWidget { ...@@ -185,8 +185,9 @@ class BottomNavigationBar extends StatefulWidget {
}) : assert(items != null), }) : assert(items != null),
assert(items.length >= 2), assert(items.length >= 2),
assert( assert(
items.every((BottomNavigationBarItem item) => item.title != null) ||
items.every((BottomNavigationBarItem item) => item.label != null), items.every((BottomNavigationBarItem item) => item.label != null),
'Every item must have a non-null label', 'Every item must have a non-null title or label',
), ),
assert(0 <= currentIndex && currentIndex < items.length), assert(0 <= currentIndex && currentIndex < items.length),
assert(elevation == null || elevation >= 0.0), assert(elevation == null || elevation >= 0.0),
...@@ -246,13 +247,13 @@ class BottomNavigationBar extends StatefulWidget { ...@@ -246,13 +247,13 @@ class BottomNavigationBar extends StatefulWidget {
final double iconSize; final double iconSize;
/// The color of the selected [BottomNavigationBarItem.icon] and /// The color of the selected [BottomNavigationBarItem.icon] and
/// [BottomNavigationBarItem.label]. /// [BottomNavigationBarItem.title].
/// ///
/// If null then the [ThemeData.primaryColor] is used. /// If null then the [ThemeData.primaryColor] is used.
final Color? selectedItemColor; final Color? selectedItemColor;
/// The color of the unselected [BottomNavigationBarItem.icon] and /// The color of the unselected [BottomNavigationBarItem.icon] and
/// [BottomNavigationBarItem.label]s. /// [BottomNavigationBarItem.title]s.
/// ///
/// If null then the [ThemeData.unselectedWidgetColor]'s color is used. /// If null then the [ThemeData.unselectedWidgetColor]'s color is used.
final Color? unselectedItemColor; final Color? unselectedItemColor;
...@@ -691,7 +692,7 @@ class _Label extends StatelessWidget { ...@@ -691,7 +692,7 @@ class _Label extends StatelessWidget {
), ),
), ),
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: Text(item.label!), child: item.title ?? Text(item.label!),
), ),
); );
......
...@@ -78,13 +78,13 @@ class BottomNavigationBarThemeData with Diagnosticable { ...@@ -78,13 +78,13 @@ class BottomNavigationBarThemeData with Diagnosticable {
final IconThemeData? unselectedIconTheme; final IconThemeData? unselectedIconTheme;
/// The color of the selected [BottomNavigationBarItem.icon] and /// The color of the selected [BottomNavigationBarItem.icon] and
/// [BottomNavigationBarItem.label]. /// [BottomNavigationBarItem.title].
/// ///
/// See [BottomNavigationBar.selectedItemColor]. /// See [BottomNavigationBar.selectedItemColor].
final Color? selectedItemColor; final Color? selectedItemColor;
/// The color of the unselected [BottomNavigationBarItem.icon] and /// The color of the unselected [BottomNavigationBarItem.icon] and
/// [BottomNavigationBarItem.label]s. /// [BottomNavigationBarItem.title]s.
/// ///
/// See [BottomNavigationBar.unselectedItemColor]. /// See [BottomNavigationBar.unselectedItemColor].
final Color? unselectedItemColor; final Color? unselectedItemColor;
......
...@@ -24,11 +24,17 @@ class BottomNavigationBarItem { ...@@ -24,11 +24,17 @@ class BottomNavigationBarItem {
/// The argument [icon] should not be null and the argument [label] should not be null when used in a Material Design's [BottomNavigationBar]. /// The argument [icon] should not be null and the argument [label] should not be null when used in a Material Design's [BottomNavigationBar].
const BottomNavigationBarItem({ const BottomNavigationBarItem({
required this.icon, required this.icon,
@Deprecated(
'Use "label" instead, as it allows for an improved text-scaling experience. '
'This feature was deprecated after v1.19.0.',
)
this.title,
this.label, this.label,
Widget? activeIcon, Widget? activeIcon,
this.backgroundColor, this.backgroundColor,
this.tooltip, this.tooltip,
}) : activeIcon = activeIcon ?? icon, }) : activeIcon = activeIcon ?? icon,
assert(label == null || title == null),
assert(icon != null); assert(icon != null);
/// The icon of the item. /// The icon of the item.
...@@ -61,6 +67,15 @@ class BottomNavigationBarItem { ...@@ -61,6 +67,15 @@ class BottomNavigationBarItem {
/// * [BottomNavigationBarItem.icon], for a description of how to pair icons. /// * [BottomNavigationBarItem.icon], for a description of how to pair icons.
final Widget activeIcon; final Widget activeIcon;
/// The title of the item. If the title is not provided only the icon will be shown when not used in a Material Design [BottomNavigationBar].
///
/// This field is deprecated, use [label] instead.
@Deprecated(
'Use "label" instead, as it allows for an improved text-scaling experience. '
'This feature was deprecated after v1.19.0.',
)
final Widget? title;
/// The text label for this [BottomNavigationBarItem]. /// The text label for this [BottomNavigationBarItem].
/// ///
/// This will be used to create a [Text] widget to put in the bottom navigation bar. /// This will be used to create a [Text] widget to put in the bottom navigation bar.
......
...@@ -429,7 +429,7 @@ Future<void> main() async { ...@@ -429,7 +429,7 @@ Future<void> main() async {
semantics.dispose(); semantics.dispose();
}); });
testWidgets('Label of items should be nullable', (WidgetTester tester) async { testWidgets('Title of items should be nullable', (WidgetTester tester) async {
final MemoryImage iconProvider = MemoryImage(Uint8List.fromList(kTransparentImage)); final MemoryImage iconProvider = MemoryImage(Uint8List.fromList(kTransparentImage));
final List<int> itemsTapped = <int>[]; final List<int> itemsTapped = <int>[];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment