本文实例为大家分享了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"), ) ], ), ], ), ), ); }}【Flutter实现顶部导航栏功能】如果底部导航栏和顶部导航栏同时存在的
在这里只写顶部导航栏的实现,底部的可以参照我之前的文章
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("推荐")) ], )); }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com 。
-- 展开阅读全文 --
推荐阅读
- 涿怎么读 涿的读法
- 未绝育的公猫可以养在一起吗
- Flutter定义tabbar底部导航路由跳转的方法
- Android组件化原理详细介绍
- Flutter自定义底部导航栏的方法
- Android简单实现动态权限获取相机权限及存储空间等多权限
- 仿英雄联盟 WPF实现雷达图的示例代码
- 白羊座男生的分手前兆
- 怎么和巨蟹座女生异地恋