当前位置:首页 > 谈天说地 > 正文内容

Flutter实现顶部导航栏功能

34资源网2022年07月29日 10:11335

本文实例为大家分享了flutter实现顶部导航栏的具体代码,供大家参考,具体内容如下

import 'package:flutter/material.dart';
class appbardemopage extends statelesswidget {
  const appbardemopage({key key}) : super(key: key);

  @override
  widget build(buildcontext context) {
    return defaulttabcontroller(
    //导航栏的长度
      length: 4,
      child: scaffold(
        appbar: appbar(
          title: text("appbardemopage"),
          backgroundcolor: colors.red,
          centertitle: true,
          bottom: tabbar(
            // isscrollable: true, //可滚动
            indicatorcolor: colors.bluegrey, //指示器的颜色
            labelcolor: colors.bluegrey, //选中文字颜色
            unselectedlabelcolor: colors.white, //为选中文字颜色
            // indicatorsize: tabbarindicatorsize.label, //指示器与文字等宽
            tabs: <widget>[
              tab(text: "热门"),
              tab(text: "推荐"),
              tab(text: "好友"),
              tab(text: "动态"),
            ],
          ),
        ),
        body: tabbarview(
          children: <widget>[
            container(
              child: text("hello"),
            ),
            listview(
              children: <widget>[
                listtile(
                  title: text("第二个tab"),
                )
              ],
            ),
            listview(
              children: <widget>[
                listtile(
                  title: text("第三个tab"),
                )
              ],
            ),
            listview(
              children: <widget>[
                listtile(
                  title: text("第四个tab"),
                )
              ],
            ),
          ],
        ),
      ),
    );
  }
}

如果底部导航栏和顶部导航栏同时存在的

在这里只写顶部导航栏的实现,底部的可以参照我之前的文章

import 'package:flutter/material.dart';

class categorypage extends statefulwidget {
  categorypage({key key}) : super(key: key);

  @override
  _categorypagestate createstate() => _categorypagestate();
}

class _categorypagestate extends state<categorypage> {
  @override
  widget build(buildcontext context) {
    return defaulttabcontroller(
      length: 4,
      child: scaffold(
        appbar: appbar(
          title: row(
            children: <widget>[
              expanded(
                child: tabbar(
                  tabs: <widget>[
                    tab(text: "精选"),
                    tab(text: "电影"),
                    tab(text: "动漫"),
                    tab(text: "nba"),
                  ],
                ),
              )
            ],
          ),
        ),
        body: tabbarview(
          children: <widget>[
            listview(
              children: <widget>[
                listtile(
                  title: text("第一个tab"),
                )
              ],
            ),
            listview(
              children: <widget>[
                listtile(
                  title: text("第二个tab"),
                )
              ],
            ),
            listview(
              children: <widget>[
                listtile(
                  title: text("第三个tab"),
                )
              ],
            ),
            listview(
              children: <widget>[
                listtile(
                  title: text("第四个tab"),
                )
              ],
            ),
          ],
        ),
      ),
    );
  }
}

这么写是对导航栏点击做的监听,实现效果一样

import 'package:flutter/material.dart';

class navbarpage extends statefulwidget {
  navbarpage({key key}) : super(key: key);

  @override
  _navbarpagestate createstate() => _navbarpagestate();
}

class _navbarpagestate extends state<navbarpage>
    with singletickerproviderstatemixin {
  tabcontroller _tabcontroller;
  @override
  void initstate() {
    super.initstate(); //length为导航栏的个数
    _tabcontroller = new tabcontroller(vsync: this, length: 2);
    _tabcontroller.addlistener(() {
      print(_tabcontroller.index);//打印点击的索引
    });
  }

  @override
  widget build(buildcontext context) {
    return scaffold(
        appbar: appbar(
          title: text("navbar"),
          bottom: tabbar(
            controller: this._tabcontroller,
            tabs: <widget>[
              tab(text: "热销"),
              tab(text: "推荐"),
            ],
          ),
        ),
        body: tabbarview(
          controller: this._tabcontroller,
          children: <widget>[
            center(child: text("热销")),
            center(child: text("推荐"))
          ],
        ));
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

支付宝红包二维码

除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

看下图所示是好多参与这次活动领取红包的朋友:

支付宝红包

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/19993.html

分享给朋友:

相关文章

用不言谢造句17句分享
用不言谢造句17句分享

1、大恩不言谢,以后有什么用得上我的,尽管说!2、人们都说大恩不言谢,又说滴水之恩当涌泉相报,谢还是不谢?好为难!那今儿就不谢天不谢地,只谢朋友,谢谢你风雨一路的陪伴。感恩节快乐!3、大恩不言谢,我就是结草衔环,也不足为报。4、大恩不言谢,...

​分享5句用薪尽火灭成语造句
​分享5句用薪尽火灭成语造句

1、入涅盘又称入灭、薪尽火灭(薪喻佛身或机缘,火喻智慧或佛身)。2、否则,咱师徒情分从此刻开始薪尽火灭。3、铲除这些非正常因素,降温楼市才能“薪尽火灭”。4、薪尽火灭:咱们的观点既是云云不同,那麼从今以后你别再来见我,从这个时候起薪尽火灭好...

30句至理名言,句句都非常经典
30句至理名言,句句都非常经典

1、命里有时终须有,命里无时莫强求。谋事在人,成事在天。很多事情是人力不能勉强的,随缘就好。2、忍得一时之气,免得百日之忧。在情绪冲动的情况下,做出的决策伤人伤己,总是让人追悔莫及。能忍住自己的脾气,是一种修养,更是一种能力。3、是非终日有...

苏宁易付宝在哪里找(苏宁易付宝解绑流程)
苏宁易付宝在哪里找(苏宁易付宝解绑流程)

天眼查App显示,近日,南京苏宁易付宝网络科技有限公司发生工商变更,尚姬娟退出法定代表人、执行董事、总经理一职,由卢世栋接任。 南京苏宁易付宝网络科技有限公司成立于2011年1月,注册资本为10亿人民币,经营范围包含互联网支付;计算机...

迷你世界在线玩免费(迷你世界不用实名认证)
迷你世界在线玩免费(迷你世界不用实名认证)

迷你世界官方最新版本是一款卡通像素风格的沙盒冒险类手机游戏,采用的是经典像素方块的画风,在这里,玩家只需使用游戏账号进行登录,进入游戏后就可以免费获取新手专属福利,告别了人数过多造成的网络卡顿,让你畅玩不停。游戏的操作也是非常的简单,左...

华为p9上市时间及价格(华为p9参数详细参数表)
华为p9上市时间及价格(华为p9参数详细参数表)

继上周华为在伦敦举办了华为P9国际版发布会之后,北京时间4月15日下午,华为在上海大舞台正式举办了华为P9国内发布会,这也预示着华为P9正式登陆中国内市场。此次国内发布会,华为正式发布了华为P9,P9 Plus,采用了与徕卡合作的双摄像...