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

Flutter实现顶部导航栏功能

34资源网2022-07-29446

本文实例为大家分享了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

分享给朋友:

相关文章

30句用喜从天降造句的语句

30句用喜从天降造句的语句

1、让他去泰山旅游,那真是喜从天降。…

养成良好的习惯,做一名有品位的教师

养成良好的习惯,做一名有品位的教师

陶行知先生说:“思想决定行动,行动养成习惯,习惯形成品质,品质决定命运”。最近从网上读了《影响教师一生的100个好习惯》一书,不禁对陶先生这句话有了更深刻的领悟和理解。阅读本书带给我的不仅是享受,更多的则是生活的引领,智慧的传递和方法的教授…

koko卡卡拖地机器人家用全自动擦地机推荐

koko卡卡拖地机器人家用全自动擦地机推荐

koko卡卡智能拖地机是东莞市宝联电子科技有限公司旗下产品,隶属于香港概念数码科技有限公司,其主要研发机器人吸尘器等高科技领域家居产品,想知道卡卡智能拖地机好用吗,看看下面是网友使用koko卡卡智能拖地机的相关介绍,希望对大家有所帮助。1、…

视频号怎么开通微信小商店技巧流程方法分享

视频号怎么开通微信小商店技巧流程方法分享

这两年直播的风口一直高居不下,微信终于也跟上了直播热潮,视频号直播新增购物车功能,已经开通了小商店的视频号,可以在直播中上架小商店商品,直播过程可以展示并售卖商品。视频号直播带货无疑让更多创作者加入其中,同时也意味着视频号功能的进一步完善,…

现在农村做什么暴利比较好(农村适合的创业项目推荐)

现在农村做什么暴利比较好(农村适合的创业项目推荐)

在农村农民买东西的主要途径是农村赶集,这时候很多人会批发了东西来到农村集上去卖,这属小本暴利行业,可以赚不少钱。那么,农村赶集摆摊什么暴利?赶集卖什么利润大?下面一起来了解一下。 在农村赶集也是有不少工具可以售卖的,无外乎想要销量好的最好…

电竞酒店,是“躺赢”的好生意吗?

电竞酒店,是“躺赢”的好生意吗?

图源:摄图网 编者按:本文来自微信进击波财经(ID:jinbubo),作者:进击波大商业组,编辑:mark,总编:沈帅波,创业邦经授权转载 电竞酒店,网吧的终场? “开黑,搞起!” 国庆期间,我和两位同行的朋友,在成都的春熙路商圈,体验了一…