当前位置:首页 > 谈天说地

Flutter实现顶部导航栏功能

34资源网2022-07-29648

本文实例为大家分享了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("推荐"))
          ],
        ));
  }
}

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

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

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

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

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

分享给朋友:

相关文章

​京东钢镚怎么使用?教你用京东钢镚的支付的方法教程

​京东钢镚怎么使用?教你用京东钢镚的支付的方法教程

京东钢镚怎么使用?很多朋友看到自己的京东钱包里面有京东钢镚,不知道京东钢镚怎么使用,在使用京东钢镚之前,一定要要先了解清楚京东钢镚使用条件有哪些,下面开淘小编来介绍一下京东钢镚怎么使用?如何用你的京东钢镚支付购买商品的方法教程分享。…

100元内最好的音箱选择哪种好?看看这款适合你不?

100元内最好的音箱选择哪种好?看看这款适合你不?

目前市面上的音箱种类繁多,有的音质非常好,有的音质比较差,有些朋友酷爱音乐,可是又不想花太多钱在这些音箱上面,一般都会选择一些100元以内的音箱。那么100元内最好的音箱选择哪种好?下面,小编给大家推荐一款迷你型的小音箱,大家一起来看看吧。…

柳夜熙一夜暴粉,顶级品牌悉数入局,元宇宙的热点不好蹭

柳夜熙一夜暴粉,顶级品牌悉数入局,元宇宙的热点不好蹭

图源:摄图网 编者按:本文来自微信公众号深响(ID:deep-echo),作者:郭瑞灵,创业邦经授权转载 毋庸置疑,“元宇宙”绝对是当下最火的概念。 海外,Facebook已经改名Meta并宣布从社交媒体转型为“元宇宙”公司,“元宇宙”概念…

汽车中的8848,高合HiPhi X顶配售价高达80万,你会买单吗?

汽车中的8848,高合HiPhi X顶配售价高达80万,你会买单吗?

编者按:本文来自微信公众号银杏科技(ID:yinxingcj),作者:负束,编辑:白望,创业邦经授权转载 2015年9月丁磊加入乐视,担任乐视超级汽车联合创始人、法拉第未来全球CEO。 当时丁磊一定没想到,乐视很快就会陷入了资金链断裂,贾跃…

微信直接打开淘宝抖音,但李佳琦罗永浩带货,买不了

微信直接打开淘宝抖音,但李佳琦罗永浩带货,买不了

图源:摄图网 编者按:本文来自微信公众号IT时报(ID:vittimes),作者:江丽雯,编辑:郝俊慧 挨踢妹,排版:季嘉颖,创业邦经授权转载 11月29日,微信放开了对外链的限制。 当日发布的《关于〈微信外部链接内容管理规范〉的更新声明》…

怎么进去usb启动设置(usb启动安装系统的步骤)

怎么进去usb启动设置(usb启动安装系统的步骤)

在使用u盘装系统前,我们都需要将u盘设置为第一启动项,这样才能进入PE安装系统。但是有用户在bios设置里却找不到u盘选项,遇到这个问题可让没有安装系统经验的用户头疼了。接下来,快启动小编就为大家带来详细的解决办法。有需要的朋友赶紧收藏学习…