我正在安装底部导航,根据下面的屏幕截图,当我切换到右侧图标时,一切正常,但是当切换回来时,导航会重复,一个在另一个之上。< /p>
显示的页面是“首页”或人们登录时看到的第一页,在标签之间切换之前,导航是正常的。
这是怎么回事?
如果需要更多上下文,但导航栏位于名为 home 的 .dart 文件中,而主页内容(搜索栏上方)位于名为 results 的 .dart 页面中。
这是导航栏的代码
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
// Properties & Variables needed
int currentTab = 0; // to keep track of active tab index
final List<Widget> screens = [
Settings(),
MyHomePage(),
]; // to store nested tabs
final PageStorageBucket bucket = PageStorageBucket();
Widget currentScreen = Results(); // Our first view in viewport
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageStorage(
child: currentScreen,
bucket: bucket,
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.camera),
backgroundColor: Color(0xff33333D),
onPressed: () {},
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
bottomNavigationBar: BottomAppBar(
shape: CircularNotchedRectangle(),
notchMargin: 0,
child: Container(
height: 60,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
MaterialButton(
minWidth: 125,
onPressed: () {
setState(() {
currentScreen =
Home(); // if user taps on this dashboard tab will be active
currentTab = 0;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.dashboard,
color: currentTab == 0
? Color(0xff33333D)
: Color(0xffC6CBD1),
),
],
),
),
],
),
// Right Tab bar icons
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
MaterialButton(
minWidth: 125,
onPressed: () {
setState(() {
currentScreen =
Settings(); // if user taps on this dashboard tab will be active
currentTab = 2;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.dashboard,
color: currentTab == 2
? Color(0xff33333D)
: Color(0xffC6CBD1),
),
],
),
),
],
)
],
),
),
),
);
}
}