flutter 顶部导航tabbar自定义
本文使用tabbar实现顶部横向滚动多个菜单。
实现tabbar搜索框功能加功能按钮。
话不多说,上代码!
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_zhihu/kits/color/colorKit.dart';
- class TestPage extends StatefulWidget {
- @override
- _TestPageState createState() => _TestPageState();
- }
- class _TestPageState extends State<TestPage>
- with SingleTickerProviderStateMixin {
- TabController _tabController; //tabbar控制器,控制顶部tabbar切换
- //搜索框控制器,适用于在全局监听搜索框内容。如果不需要全局监听,只使用onChanged onSubmitted即可
- TextEditingController _textController;
- @override
- void initState() {
- // TODO: implement initState
- super.initState();
- _tabController = TabController(length: 9, vsync: this);//初始化控制器
- _textController = TextEditingController();
- _textController.addListener(() {
- print('_textController+${_textController.text}');
- });
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Expanded(
- child: Icon(
- Icons.home,
- ),
- flex: 0,
- ),
- Expanded(
- child: Container(
- height: 30,
- margin: EdgeInsets.fromLTRB(10, 5, 10, 0),
- child: TextField(
- controller: _textController,
- decoration: InputDecoration(
- fillColor: ColorKit.hexToColor('#F6F6F6'),
- filled: true,
- contentPadding: EdgeInsets.fromLTRB(10, 0, 10, 0),
- hintText: '请输入搜索内容',
- hintStyle: TextStyle(fontSize: 13),
- border: OutlineInputBorder(
- borderRadius: BorderRadius.circular(20),
- borderSide: BorderSide.none,
- ),
- ),
- onChanged: (text){
- print('onchanged+$text');
- },
- onSubmitted: (text){
- print('onSubmitted+$text');
- },
- ),
- ),
- flex: 1,
- ),
- Expanded(
- child: Icon(Icons.pages),
- flex: 0,
- ),
- ],
- ),
- bottom: PreferredSize(
- preferredSize: Size.fromHeight(35),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Expanded(
- flex: 1,
- child: Container(
- height: 48,
- child: TabBar(
- indicatorSize: TabBarIndicatorSize.label,
- isScrollable: true,
- controller: _tabController,
- tabs: [
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- Container(
- width: 60,
- alignment: Alignment.center,
- child: Text('退机'),
- ),
- ],
- ),
- )),
- Expanded(flex: 0, child: Container(
- margin: EdgeInsets.fromLTRB(10, 0, 10, 0),
- child: Icon(Icons.ac_unit),
- ))
- ],
- ),
- ),
- ),
- //顶部tabbar页面内容
- body: TabBarView(
- controller: _tabController,//tabbar控制器
- children: [
- Text('111111111'),
- Text('2222222222'),
- Text('333333333'),
- Text('111111111'),
- Text('2222222222'),
- Text('333333333'),
- Text('111111111'),
- Text('2222222222'),
- Text('333333333')
- ],
- ),
- );
- }
- }
flutter 顶部导航tabbar自定义的更多相关文章
- Flutter学习笔记(17)--顶部导航TabBar、TabBarView、DefaultTabController
如需转载,请注明出处:Flutter学习笔记(17)--顶部导航TabBar.TabBarView.DefaultTabController 上一篇我们说了BottmNavigationBar底部导航 ...
- 顶部导航TabBar、TabBarView、DefaultTabController
原文地址:https://www.cnblogs.com/upwgh/p/11369537.html TabBar:Tab页的选项组件,默认为水平排列. TabBarView:Tab页的内容容器,Ta ...
- uni-app自定义导航栏按钮|uniapp仿微信顶部导航条
最近一直在学习uni-app开发,由于uniapp是基于vue.js技术开发的,只要你熟悉vue,基本上很快就能上手了. 在开发中发现uni-app原生导航栏也能实现一些顶部自定义按钮+搜索框,只需在 ...
- 微信小程序自定义顶部导航
注释:自定义导航需要自备相应图片 一.设置自定义顶部导航 Navigation是小程序的顶部导航组件,当页面配置navigationStyle设置为custom的时候可以使用此组件替代原生导航栏. 1 ...
- [置顶]
xamarin Tablayout+Viewpager+Fragment顶部导航栏
最近几天不忙,所以把项目中的顶部导航栏的实现归集一下.android中使用TabLayout+ViewPager+Fragment制作顶部导航非常常见,代码实现也比较简单.当然我这个导航栏是基于xam ...
- uni-app实现顶部导航栏显示按钮+搜索框
最近公司准备做app,最终决定使用uni-app框架开发,但是当把设计图给我的时候我心里有点没底,因为他的设计图顶部长成这个样子: 因为这个功能在小程序是根本无法实现的,可能受这个影响,我感觉好像实现 ...
- TabLayout实现顶部导航(一)
代码地址如下:http://www.demodashi.com/demo/14552.html 前言 顶部导航栏,是我们在开发中比较常见的一种显示布局,它的实现可以有多种方式,那么今天我们就来讲讲 T ...
- Android之仿今日头条顶部导航栏效果
随着时间的推移现在的软件要求显示的内容越来越多,所以要在小的屏幕上能够更好的显示更多的内容,首先我们会想到底部菜单栏,但是有时候像今日头条新闻客户端要显示的内容太多,而且又想在主界面全部显示出来,所以 ...
- 【React -- 9/100】 抽离顶部导航栏 - [组件复用]
今天写的页面中需要重复使用到顶部导航栏,所以把顶部导航栏抽离出来 考虑复用组件的健壮性,使用PropTypes校验,可以自定义一个click事件 JSX import React from " ...
- uni-app动态修改顶部导航栏标题
动态修改顶部导航栏标题有两种方法方式一.使用自定义到导航栏,覆盖原生导航栏 缺点:自定义到导航栏性能远远不如原生导航栏,手机顶部状态栏区域会被页面内容覆盖,这是因为窗体是沉浸式的原因,即全屏可写内容: ...
随机推荐
- C# RichTextBox跳转到指定行(文本行跳转和显示行跳转)
文本行跳转: 对禁止自动换行(WordWrap属性为False)有效 1 /// <summary>跳到指定行</summary> 2 private void JumpToL ...
- Gitbook部署
title: Gitbook部署 # 标题 date: 2020-06-14 08:00:00 借助Gitbook,写自己的第一本电子书 Gitbook部署 一.电脑环境 Git 环境,我的电脑上已经 ...
- 重新安装office原版本没卸载干净
先在设置--卸载界面确保已经卸载 在键盘上按"win+R",在运行窗口里面输入"regedit",回车 ,进入注册表编辑器 找到products 删除与offi ...
- 使用layui+jQuery实现点击删除单行数据
使用layui+jQuery实现点击删除单行数据 首先要用到layui的官网手册 地址:https://www.layui.com/ 注意1. 此功能是在使用layui展示数据的基础上实现 3. ...
- pytest-2 之前后置及 conftest.py+fixture+yield实现用例前后置
pytest测试用例及类级别的前置,可以和unittest一样进行定义,也可以把该前置方法或类定义到conftest.py里,而在需要前置的方法的参数里加上该前置名作为参数: pytest有两种方式来 ...
- JAVA学习笔记-06
多态:可以理解为事物存在的多种体现形态 1.多态的基本体现 父类的引用指向了自己的子类对象 父类的引用也可以接收自己的子类对象 2.多态的前提 必须是类与类之间有关系,要么继承,要么实现 通常还有一个 ...
- 梦想Android版CAD控件(安卓CAD二次开发,安卓CAD控件)2023.02.26更新
下载地址:https://www.mxdraw.com/ndetail_40240.html1. 增加willBeReturnStart事件2. 增加使用OpenGL缓存3. 优化界面响应时间4. 修 ...
- CRC校验模板
#ifndef CRC_H #define CRC_H #include "main.h" #ifdef CRC_C #endif typedef struct { uchar R ...
- JS——如果数组中的信息存在多个相同的属性,那么则将这些相同的信息放到同一个children中。
var arr = [ {name: '张三', age: 10, sex: '男'}, {name: '李四', age: 10, sex: '男'}, {name: '钱五', age: 11, ...
- source insight c++ namespace 无法跳转解决方法
source insight c++ namespace 无法跳转解决方法 2016年02月15日 11:47:35 暗小夜 阅读数:4460 勾选igore namespace declarat ...