当前位置: 首页 > news >正文

Flutter自定义tabbar任意样式

场景描述

最近在使用遇到几组需要自定义的tabbar或者类似组件,在百度查询资料中通常,需要自定义

TabIndicator extends Decoration

比如上图中的带圆角的指示器这样实现

就很麻烦, 搜出来的相关也是在此之处上自己画,主要再遇到一个稍微特殊的,比如带背景切换的,带特殊图形或者path的,费事费力。

有经验同学可能就会相当那我干脆直接用radiogroup做单选然后去关联page切换。但再劳神之前,

不如点进去tabbar看一下,flutter精髓之一就是万物皆为widget,局部子的自定义正式优势所在, 

 思路描述

  /// The length of this list must match the [controller]'s [TabController.length]/// and the length of the [TabBarView.children] list.final List<Widget> tabs;

很明显这个是可以随意自定义的,

我们先定义好 两种切换状态的Widget

getAllTabs() {return <Tab>[for (int i = 0; i < controller.tabs.length; i++)Tab(child: Stack(children: [ImageUtils.assetImage(isSelect? "bg_data_tab_select": "bg_data_tab_unselect",width: 72.w,height: 34.w,fit: BoxFit.cover),// 这个是我自定义背景 文字widget 你可以使用普通textUIText(widgetWidth: 72.w,widgetHeight: 34.w,fontWeight: FontWeight.w500,text: controller.tabs[i],fontSize: 18.w,textAlign: TextAlign.center,widgetAlignment: Alignment.center,fontColor: isSelect? const Color(0xFF202437): Colors.white,letterSpacing: -0.04,)],),),];

此时我们只需要得到isSelect值,改变的时候动态去刷新state即可 将前面的isSelect 改为controller.tabIndex =i即可

  TabBar(onTap: (index) {// 赋值controller.tabIndex = index;// 封装的刷新 一般对应setStatecontroller.update();
},

http://www.lryc.cn/news/303345.html

相关文章:

  • Java设计模式【策略模式】
  • (13)Hive调优——动态分区导致的小文件问题
  • 【linux】使用g++调试内存泄露:AddressSanitizer
  • 第三百五十七回
  • 新版Java面试专题视频教程——框架篇
  • 网络爬虫实战 | 上传以及下载处理后的文件
  • Linux--shell编程中有关while循环的详细内容
  • 回归测试与重新测试
  • java 版本企业招标投标管理系统源码+多个行业+tbms+及时准确+全程电子化
  • 详解动态内存管理!
  • iocp简单例子
  • HAL STM32 HW I2C DMA + SSD1306/SH1106驱动示例
  • grafana配置钉钉告警模版(一)
  • 佳能2580的下载手册
  • YOLO-World:实时开放词汇目标检测
  • Unity中关于群组的一些组件
  • 面向对象详解,面向对象的三大特征:封装、继承、多态
  • 【阿里云服务器的一些使用坑】都是无知的泪水呀
  • Docker的常用命令||Docker是个流行的容器化平台,它允许你打包、分发和运行应用程序。
  • 汽车电子论文学习--电动汽车电机驱动系统动力学特性分析
  • c++的一些陌生用法记录
  • Vue | (三)使用Vue脚手架(中)| 尚硅谷Vue2.0+Vue3.0全套教程
  • TenorFlow多层感知机识别手写体
  • Java基础(二十六):Java8 Stream流及Optional类
  • qt - 19种精美软件样式
  • vue 使用docx库生成word表格文档
  • ElementUI table表格组件实现双击编辑单元格失去焦点还原,支持多单元格
  • Java基于SpringBoot+Vue的图书管理系统
  • 【云安全】Hypervisor与虚拟机
  • JS文本加密方法探究