#flutter #dart #navigationbar
Вопрос:
[![First item in Navigation Bar(Red)][1]][1] [![when chilcked item in page red][1]][1] [![moving to Second item in Navigation Bar ][1]][1] [![Moving back to first item in Navigation Bar][1]][1]
Мне нужно, чтобы, когда панель навигации перемещается с первого элемента на второй и возвращается к первому элементу, она должна показывать первую страницу в первом элементе. Как я могу это сделать? при использовании нижней панели навигации панель навигации отображается только на одной странице и исчезает. Поэтому я воспользовался пакетом https://pub.dev/packages/persistent_bottom_nav_bar
Вот код, который я использовал:
`import 'package:flutter/material.dart';
import 'package:persistent_bottom_nav_bar/persistent-tab-view.dart';
class NavigationScreen extends StatefulWidget {
@override
_NavigationScreenState createState() => _NavigationScreenState();
}
class _NavigationScreenState extends State<NavigationScreen> {
late PersistentTabController _controller;
int _currentIndex = 0;
@override
void initState() {
super.initState();
_controller = PersistentTabController(initialIndex: 0);
}
List<Widget> _buildScreens() {
return [
Red(),
Green(),
Yellow(),
];
}
List<PersistentBottomNavBarItem> _navBarsItems() {
return [
PersistentBottomNavBarItem(
icon: NavBarIcon("Red.png"),
title: ("Red"),
activeColorPrimary:Colors.white,
inactiveColorPrimary:Colors.teal,
),
PersistentBottomNavBarItem(
icon: NavBarIcon("Green.png"),
title: ("Green"),
activeColorPrimary:Colors.white,
inactiveColorPrimary:Colors.teal,
),
PersistentBottomNavBarItem(
icon: NavBarIcon("Yellow.png"),
title: ('Yellow'),
activeColorPrimary:Colors.white,
inactiveColorPrimary:Colors.teal,
),
];
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Container(
child: PersistentTabView(
context,
controller: _controller,
screens: _buildScreens(),
items: _navBarsItems(),
onItemSelected: _onItemTapped,
confineInSafeArea: true,
backgroundColor: secondaryColor,
handleAndroidBackButtonPress: true, // Default is true.
resizeToAvoidBottomInset: true, // This needs to be true if you want to move up the screen when keyboard appears. Default is true.
stateManagement: true, // Default is true.
hideNavigationBarWhenKeyboardShows: true,
popAllScreensOnTapOfSelectedTab: true,
popActionScreens: PopActionScreensType.all,
navBarStyle: NavBarStyle.simple,
),
),
),
);
}
void _onItemTapped(int index) {
setState(() {
_currentIndex = index;
});
}
}
`