используйте этот плагин Presistant_bottom_nav_bar . Исходя из вопроса, вам нужна нижняя панель навигации на каждой странице. Вы можете отключить нижнюю навигацию в определенных c проверке экрана над ссылкой
это очень хороший плагин на мой взгляд. проверьте стиль навигации по этой ссылке. вы можете изменить дизайн bottomnavbar navBarStyle: NavBarStyle.style9, просто измените style9 на любой номер, предоставленный плагином. Я считаю, что 15 из них доступны
Вы можете использовать свой собственный значок вместо значка по умолчанию, также вместо этого CupertinoColors.systemPurple вы также можете использовать этот тип Colors.red Сообщите мне, работает ли он
PersistentTabController _controller =PersistentTabController(initialIndex: 0);
//Screens for each nav items.
List<Widget> _NavScreens() {
return [
recommend(),
optional(),
backtest(),
machine(),
];
}
List<PersistentBottomNavBarItem> _navBarsItems() {
return [
PersistentBottomNavBarItem(
icon: Icon(Icons.home),
title: ("Recommend"),
activeColor: CupertinoColors.activeBlue,
inactiveColor: CupertinoColors.systemGrey,
),
PersistentBottomNavBarItem(
icon: Icon(Icons.favorite),
title: ("Optional"),
activeColor: CupertinoColors.activeGreen,
inactiveColor: CupertinoColors.systemGrey,
),
PersistentBottomNavBarItem(
icon: Icon(Icons.person_pin),
title: ("Backtest"),
activeColor: CupertinoColors.systemRed,
inactiveColor: CupertinoColors.systemGrey,
),
PersistentBottomNavBarItem(
icon: Icon(Icons.local_activity),
title: ("Machine"),
activeColor: CupertinoColors.systemIndigo,
inactiveColor: CupertinoColors.systemGrey,
),
];
}
@override
Widget build(BuildContext context) {
return Center(
child: PersistentTabView(
controller: _controller,
screens: _NavScreens(),
items: _navBarsItems(),
confineInSafeArea: true,
backgroundColor: Colors.white,
handleAndroidBackButtonPress: true,
resizeToAvoidBottomInset: true,
hideNavigationBarWhenKeyboardShows: true,
decoration: NavBarDecoration(
borderRadius: BorderRadius.circular(10.0),
),
popAllScreensOnTapOfSelectedTab: true,
navBarStyle: NavBarStyle.style9,
),
);
}