BottomNavigationBar constructor
- Key? key,
- required List<
BottomNavigationBarItem> items, - ValueChanged<
int> ? onTap, - int currentIndex = 0,
- double? elevation,
- BottomNavigationBarType? type,
- Color? fixedColor,
- Color? backgroundColor,
- double iconSize = 24.0,
- Color? selectedItemColor,
- Color? unselectedItemColor,
- IconThemeData? selectedIconTheme,
- IconThemeData? unselectedIconTheme,
- double selectedFontSize = 14.0,
- double unselectedFontSize = 12.0,
- TextStyle? selectedLabelStyle,
- TextStyle? unselectedLabelStyle,
- bool? showSelectedLabels,
- bool? showUnselectedLabels,
- MouseCursor? mouseCursor,
- bool? enableFeedback,
- BottomNavigationBarLandscapeLayout? landscapeLayout,
- bool useLegacyColorScheme = true,
Creates a bottom navigation bar which is typically used as a Scaffold's Scaffold.bottomNavigationBar argument.
The length of items
must be at least two and each item's icon and label
must not be null.
If type
is null then BottomNavigationBarType.fixed is used when there
are two or three items
, BottomNavigationBarType.shifting otherwise.
The iconSize
, selectedFontSize
, unselectedFontSize
, and elevation
arguments must be non-negative.
If selectedLabelStyle
.color and unselectedLabelStyle
.color values
are non-null, they will be used instead of selectedItemColor
and
unselectedItemColor
.
If custom IconThemeDatas are used, you must provide both
selectedIconTheme
and unselectedIconTheme
, and both
IconThemeData.color and IconThemeData.size must be set.
If useLegacyColorScheme
is set to false
selectedIconTheme
values will be used instead of iconSize
and selectedItemColor
for selected icons.
unselectedIconTheme
values will be used instead of iconSize
and unselectedItemColor
for unselected icons.
If both selectedLabelStyle
.fontSize and selectedFontSize
are set,
selectedLabelStyle
.fontSize will be used.
Only one of selectedItemColor
and fixedColor
can be specified. The
former is preferred, fixedColor
only exists for the sake of
backwards compatibility.
If showSelectedLabels
is null
, BottomNavigationBarThemeData.showSelectedLabels
is used. If BottomNavigationBarThemeData.showSelectedLabels is null,
then showSelectedLabels
defaults to true
.
If showUnselectedLabels
is null
, BottomNavigationBarThemeData.showUnselectedLabels
is used. If BottomNavigationBarThemeData.showSelectedLabels is null,
then showUnselectedLabels
defaults to true
when type
is
BottomNavigationBarType.fixed and false
when type
is
BottomNavigationBarType.shifting.
Implementation
BottomNavigationBar({
super.key,
required this.items,
this.onTap,
this.currentIndex = 0,
this.elevation,
this.type,
Color? fixedColor,
this.backgroundColor,
this.iconSize = 24.0,
Color? selectedItemColor,
this.unselectedItemColor,
this.selectedIconTheme,
this.unselectedIconTheme,
this.selectedFontSize = 14.0,
this.unselectedFontSize = 12.0,
this.selectedLabelStyle,
this.unselectedLabelStyle,
this.showSelectedLabels,
this.showUnselectedLabels,
this.mouseCursor,
this.enableFeedback,
this.landscapeLayout,
this.useLegacyColorScheme = true,
}) : assert(items.length >= 2),
assert(
items.every((BottomNavigationBarItem item) => item.label != null),
'Every item must have a non-null label',
),
assert(0 <= currentIndex && currentIndex < items.length),
assert(elevation == null || elevation >= 0.0),
assert(iconSize >= 0.0),
assert(
selectedItemColor == null || fixedColor == null,
'Either selectedItemColor or fixedColor can be specified, but not both',
),
assert(selectedFontSize >= 0.0),
assert(unselectedFontSize >= 0.0),
selectedItemColor = selectedItemColor ?? fixedColor;