前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11.Flutter学习之BottomNavigationBar自定义底部导航栏,以及页面切换

11.Flutter学习之BottomNavigationBar自定义底部导航栏,以及页面切换

作者头像
易帜
发布2022-02-09 16:00:23
1.2K0
发布2022-02-09 16:00:23
举报
文章被收录于专栏:易帜的Android 学习之旅

BottomNavigationBar

BottomNavigationBar是底部导航栏,可以让我们定义底部tab切换,bottomNavigationBar是之前讲到的Scaffold组件的参数 常见属性:

属性名

说明

items

List<BottomNavigationBar>底部导航栏集合

iconSize

icon大小

currentIndex

默认选中第几个

onTap

选中变化回调函数

fixedColor

选中的颜色

type

BottomNavigationBarType.fied BottomNavigationBarType.shifting

注意:如果底部有3个以上的tabs,则需要使用BottomNavigationBarType.fied这个属性,才会显示正常

代码语言:javascript
复制
main()=>runApp(MyApp());
class MyApp extends StatelessWidget{


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Tabs(),
    );
  }

}

class Tabs extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return _TabsState();
  }

}

class _TabsState extends State<Tabs>{
  int _bottomIndex=0;
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(title: Text('Flutter BottomNavigationBar'),),
      body: Text('tabBar'),
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: this._bottomIndex,//对应点击/显示哪个底部导航栏按钮
        onTap: (index){ //bottomNavigationBar的点击事件
          setState(() {
            this._bottomIndex=index;  //将选中的下标进行替换
          });
        },
        items: [
          BottomNavigationBarItem(
              icon: Icon(Icons.home),
              title: Text('首页')
          ),
          BottomNavigationBarItem(
              icon: Icon(Icons.settings),
              title: Text('设置')
          ),
          BottomNavigationBarItem(
              icon: Icon(Icons.mood),
              title: Text('我的')
          ),
        ],
      ),
    );
  }
}
在这里插入图片描述
在这里插入图片描述

可以看出,随着我们点击tab,tab的颜色会切换。

进阶,点击Tab进行页面切换

首先我们进行页面的创建 首页

代码语言:javascript
复制
class HomePage extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return _HomePageState();
  }

}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('首页'),
    );
  }
}

设置

代码语言:javascript
复制
class CategoryPage extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return _CategoryPageState();
  }

}

class _CategoryPageState extends State<CategoryPage> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('这是设置页面'),
    );
  }
}

我的

代码语言:javascript
复制
class MinePage extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return _MinePageState();
  }

}

class _MinePageState extends State<MinePage> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('这是我的页面'),
    );
  }
}

则我们的_TabsState类则进行如下修改即可

代码语言:javascript
复制
class _TabsState extends State<Tabs>{
  List<Widget> _page=[HomePage(),SettignPage(),MinePage()]; //用于存放对应的页面
  int _bottomIndex=0;
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(title: Text('Flutter BottomNavigationBar'),),
      body:this._page[_bottomIndex],//此处取下标对应的页面即可
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: this._bottomIndex,//对应点击/显示哪个底部导航栏按钮
        onTap: (index){ //bottomNavigationBar的点击事件
          setState(() {
            this._bottomIndex=index;  //将选中的下标进行替换
          });
        },
        items: [
          BottomNavigationBarItem(
              icon: Icon(Icons.home),
              title: Text('首页')
          ),
          BottomNavigationBarItem(
              icon: Icon(Icons.settings),
              title: Text('设置')
          ),
          BottomNavigationBarItem(
              icon: Icon(Icons.mood),
              title: Text('我的')
          ),
        ],
      ),
    );
  }
}
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BottomNavigationBar
    • 进阶,点击Tab进行页面切换
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档