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

Flutter实现顶部导航栏功能

34资源网2022-07-29465

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

分享给朋友:

相关文章

抖音如果让我遇见你而你正当年轻是什么歌曲?

抖音如果让我遇见你而你正当年轻是什么歌曲?

《抖音》短视频平台上有不少老歌经过翻唱火了,可能刚好歌词传递的情感引起了网友们的共鸣,而最近比较火的一首歌歌词大概是如果让我遇见你而你正当年轻,好多网友不知道首是什么歌曲?小编刚开始也不知道,后来经过搜索得知这是一首老歌《怨苍天变了心》,是…

华梅的经典语录

华梅的经典语录

华梅,女,1951年生于天津市,祖籍无锡。现为天津师范大学美术与设计学院院长、教授、师大华梅服饰文化学研究所所长。国家人事部授衔“有突出贡献中青年专家”,享受国务院政府津贴。1997年天津市劳动模范,1998年全国教育系统巾帼建功标兵、全国…

背光键盘怎么开灯(有背光和无背光的区别)

背光键盘怎么开灯(有背光和无背光的区别)

机械键盘轴体一直是以樱桃(Cherry)最受大众欢迎,但近几年国产轴体的快速发展,让很多玩家开始享受到更“廉价”的产品。作为国内外设领军者,雷柏自产的雷柏轴已经获得众多游戏爱好者的好评。雷柏同时还有采用经典樱桃轴的产品,笔者最近收到雷柏V8…

融资丨「PPIO边缘云」完成亿元A1轮融资,刷新边缘云领域融资记录

融资丨「PPIO边缘云」完成亿元A1轮融资,刷新边缘云领域融资记录

创业邦获悉,近日,边缘云公司PPIO宣布完成过亿元A1轮融资,由创世伙伴、张江科投、磐霖资本等多家机构联合投资,Pre-A轮投资方蓝驰创投、沸点资本及华业天成继续追加投资,光源资本担任融资财务顾问。这是公司半年内再次获投资人支持,公司A2轮…

直播间里“拆盲盒”,二手电商平台「Whatnot」拆出15亿美元丨快鲤鱼海外

直播间里“拆盲盒”,二手电商平台「Whatnot」拆出15亿美元丨快鲤鱼海外

靠着直播带货和“拆盲盒”,二手潮品电商平台 Whatnot 在今年已经完成了3轮融资,公司估值达到 15 亿美元,成立2年便跻身独角兽之列。 通过商品认证转卖、直播拍卖、直播间开“盲盒”等看似有点“中国味”的玩儿法,Whatnot一改美国二…