在主页中,我基于导航栏选项将小部件调用到我的主体main.dart,在主页中,它具有图像列表,如果单击图像之一,它将向我显示详细信息。问题是详细信息页面中的导航栏仍然显示。如何隐藏导航栏?
Main.dart
class MyApp extends StatefulWidget {
@override
_NavState createState() => _NavState();
}
class _NavState extends State {
int _selectedIndex = 0;
final _widgetOptions = [
Breakfast(),
Desert(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: _widgetOptions.elementAt(_selectedIndex),
bottomNavigationBar: Container(
color: Colors.grey[100],
child: DefaultTabController(
length: 2,
child: TabBar(
indicatorColor: Colors.grey,
labelColor: Colors.blueAccent,
unselectedLabelColor: Colors.grey,
onTap: _onItemTapped,
tabs: [
Tab(
text: 'Breakfast',
),
Tab(
text: 'Dessert',
),
],
),
),
),
);
}
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
}
我调用到主页的小部件之一
class Breakfast extends StatelessWidget {
@override
Widget build(BuildContext context) {
final title = "Fatoni's Resto Menu";
return MaterialApp(
title: title,
home: Scaffold(
appBar: AppBar(
title: Text(title),
actions: <Widget>[
IconButton(
icon: Icon(Icons.settings),
onPressed: () {},
)
],
),
body: GridView.builder(
itemCount: DataBreakfast.listViewData.length,
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
itemBuilder: (context, index) {
return Column(
children: <Widget>[
Expanded(
child: Card(
margin: EdgeInsets.all(10.0),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return DetailScreen(
name: DataBreakfast.listViewData[index],
image: DataBreakfast.listViewDataImage[index],
info: DataBreakfast.listViewDataInfo[index],
index: index);
},
),
);
},
),
),
)
],
);
},
),
),
);
}
}
答案 0 :(得分:4)
_widgetOptions
与Breakfast
一样,不应将Scaffold
用MaterialApp
包装。
MaterialApp
应该在您应用的根目录附近。
答案 1 :(得分:2)
您无需在点击操作中进行页面转换。如果仅更改主屏幕的主体,其他部分当然仍然可见。实际上,您不应将全新的脚手架放到另一个脚手架中。并且可以肯定的是,MaterialApp Widget并非像其他人已经提到的那样。
您需要纠正一些问题:
仅在Scaffold上方的_NavState的build()方法中使用MaterialApp
从早餐类中删除MaterialApp和Scaffold小部件
在早餐课中的Gridview构建器之前使用容器。记住,当替换一个脚手架实体时,您只想在其中放置容器之类的较低级别的小部件,而不是像其他脚手架那样在整个构建基块。
根据您的_NavState的状态使bottomNavigationBar可见
喜欢:
bottomNavigationBar: _selectedIndex == 0 ?
Container(
color: Colors.grey[100],
child: DefaultTabController(...)
: null