Flutter 移动到另一页后如何隐藏导航栏(颤振)?
在主页中,我调用widget到我的body main.dart基于导航栏选项,在主页中,它有一个图像列表,如果我单击其中一个图像,它会显示详细信息。问题是详细信息页面中的导航栏仍然显示。如何隐藏导航栏 主飞镖Flutter 移动到另一页后如何隐藏导航栏(颤振)?,flutter,state,navigationbar,Flutter,State,Navigationbar,在主页中,我调用widget到我的body main.dart基于导航栏选项,在主页中,它有一个图像列表,如果我单击其中一个图像,它会显示详细信息。问题是详细信息页面中的导航栏仍然显示。如何隐藏导航栏 主飞镖 class MyApp extends StatefulWidget { @override _NavState createState() => _NavState(); } class _NavState extends State { int _selectedI
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);
},
),
);
},
),
),
)
],
);
},
),
),
);
}
}
班级早餐{
@凌驾
小部件构建(构建上下文){
最终标题=“法托尼的恢复菜单”;
返回材料PP(
标题:标题,,
家:脚手架(
appBar:appBar(
标题:文本(标题),
行动:[
图标按钮(
图标:图标(图标.设置),
按下:(){},
)
],
),
正文:GridView.builder(
itemCount:DataBreakfast.listViewData.length,
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
itemBuilder:(上下文,索引){
返回列(
儿童:[
扩大(
孩子:卡片(
保证金:所有边缘套(10.0),
孩子:InkWell(
onTap:(){
导航器。推(
上下文
材料路线(
生成器:(上下文){
返回详细信息屏幕(
名称:DataBreakfast.listViewData[索引],
image:DataBreakfast.listViewDataImage[index],
信息:DataBreakfast.listViewDataInfo[索引],
索引:索引);
},
),
);
},
),
),
)
],
);
},
),
),
);
}
}
像早餐一样的\u widgetOptions
不应该用材料包裹脚手架
MaterialApp
应该位于应用程序的根目录附近。在点击操作中不进行页面转换。如果您只是更改主屏幕的主体,其他部分当然仍然可见。事实上,你不应该把一个全新的支架放进另一个支架体内。当然,也不是其他人已经提到的MaterialApp小部件
您需要纠正以下几点:
- 仅在脚手架上方的_NavState的build()方法中使用MaterialApp
- 从早餐类中删除MaterialApp和脚手架小部件
- 在早餐课程中,在Gridview生成器之前使用容器。请记住,在替换脚手架主体时,您只希望在其中包含较低级别的小部件,如容器,而不是像其他脚手架那样的整个构建块
- 根据您的导航状态,使底部导航栏可见
比如:
你的问题不太清楚。请把你的主要方法也写下来。早餐小部件中有material应用程序,但似乎从main调用了MyApp小部件。
bottomNavigationBar: _selectedIndex == 0 ?
Container(
color: Colors.grey[100],
child: DefaultTabController(...)
: null