Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在Flatter中的所有页面中显示底部导航栏_Flutter_Dart_Flutter Bottomnavigation - Fatal编程技术网

Flutter 如何在Flatter中的所有页面中显示底部导航栏

Flutter 如何在Flatter中的所有页面中显示底部导航栏,flutter,dart,flutter-bottomnavigation,Flutter,Dart,Flutter Bottomnavigation,我正在创建一个具有底部导航栏的应用程序。在底部导航栏中,它有5个项目名称,即profile、aboutus、home、notifications和cart。每个项目名称都有自己的页面。现在的问题是,我在主页中添加了一个按钮,如果我单击该按钮,它将进入新页面,但不显示底部导航栏。我如何在新页面中显示底部导航栏以及选定的当前索引。下面是dart代码 Mainpage.dart class主页扩展StatefulWidget{ @凌驾 _MainPageState createState()=>\u

我正在创建一个具有底部导航栏的应用程序。在底部导航栏中,它有5个项目名称,即profile、aboutus、home、notifications和cart。每个项目名称都有自己的页面。现在的问题是,我在主页中添加了一个按钮,如果我单击该按钮,它将进入新页面,但不显示底部导航栏。我如何在新页面中显示底部导航栏以及选定的当前索引。下面是dart代码

Mainpage.dart

class主页扩展StatefulWidget{
@凌驾
_MainPageState createState()=>\u MainPageState();
}
类_MainPageState扩展状态{
int _currentIndex=0;
最终选项卡=[
Profile(),
AboutUs(),
Home(),
通知(),
CartPage(),
];
@凌驾
void initState(){
super.initState();
_currentIndex=2;
}
@凌驾
小部件构建(构建上下文){
退货消费者(
生成器:(上下文、购物车、子对象){
返回平台脚手架(
正文:制表符[_currentIndex],
底部导航栏:平台导航栏(
android:()=>MaterialNavBarData(
类型:BottomNavigationBarType.fixed,
),
ios:()=>Cupertinotabardata(),
currentIndex:_currentIndex,
itemChanged:(索引)=>setState(
() {
_currentIndex=索引;
},
),
项目:[
底部导航气压计(
图标:PlatformWidget(
ios:()=>图标(CupertinoIcons.person),
android:()=>图标(Icons.person),
),
标题:文本(“概要文件”),
),
底部导航气压计(
图标:PlatformWidget(
ios:()=>图标(CupertinoIcons.info),
android:()=>Icon(Icons.info),
),
标题:文本(“关于我们”),
),
底部导航气压计(
图标:PlatformWidget(
ios:()=>图标(CupertinoIcons.home),
android:()=>图标(Icons.home),
),
标题:文本(“主页”),
),
底部导航气压计(
图标:PlatformWidget(
ios:()=>new Image.asset(
“assets/notification.png”,
身高:21.0,
颜色:颜色。灰色[600],
),
android:()=>图标(Icons.notifications),
),
标题:正文(
“通知”,
样式:TextStyle(字体大小:12.0),
),
),
底部导航气压计(
图标:PlatformWidget(
ios:()=>图标(CupertinoIcons.购物车),
android:()=>堆栈(
儿童:[
图标(图标、购物车),
cart.count==0?新容器(高度:0,宽度:0,)
:新定位(
右:0,,
子容器:新容器(
填充:边缘设置。全部(1),
装饰:新盒子装饰(
颜色:颜色,红色,
边界半径:边界半径。圆形(6),
),
约束:BoxConstraints(
最小宽度:12,
身高:12,
),
儿童:新文本(
“${cart.count}”,
样式:新文本样式(
颜色:颜色,白色,
字体大小:8,
),
textAlign:textAlign.center,
),
),
)
],
),
),
标题:文本(“购物车”),
),
],
),
);
},
);
}
}
首页.dart

class Home扩展StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:升起按钮(
已按下:(){
导航器.of(上下文).push(MaterialPageRoute(
生成器:(上下文)=>NewPage());
},
子项:文本(“新页”),
),
),
);
}
}
Newpage.dart

class NewPage扩展StatefulWidget{
@凌驾
_NewPageState createState();
}
类_NewPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
),
);
}
}

您可以将
脚手架
作为所有这些页面的父级,在
脚手架
上有
底部导航栏
,将
页面视图
作为
脚手架
主体

Scaffold(
      body: PageView(
        controller: MyController(),
        children: [
          MyPage1(),
          MyPage2(),
          //...
        ],
        onPageChanged: myOnPageChanged,
      ),
      bottomNavigationBar: MyNavBar(),
    )

您可以将
Scaffold
作为所有这些页面的父级,并在
Scaffold
上具有
BottomNavigationBar
,将
PageView
作为
Scaffold
主体:

Scaffold(
      body: PageView(
        controller: MyController(),
        children: [
          MyPage1(),
          MyPage2(),
          //...
        ],
        onPageChanged: myOnPageChanged,
      ),
      bottomNavigationBar: MyNavBar(),
    )

问题是,当我点击主页上的按钮时,我会移动到新的页面或屏幕,在那里我看不到底部导航barI不明白你的意思,我给了你一个解决方案,将所有页面包装在此页面视图中,该页面视图可由用户控制或由您编程。问题是,当我单击主页中的按钮时,我会移动到新页面或屏幕
class NewPage extends StatefulWidget {
  @override
  _NewPageState createState() => _NewPageState();
}

class _NewPageState extends State<NewPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
      ),
    );
  }
}
Scaffold(
      body: PageView(
        controller: MyController(),
        children: [
          MyPage1(),
          MyPage2(),
          //...
        ],
        onPageChanged: myOnPageChanged,
      ),
      bottomNavigationBar: MyNavBar(),
    )