Flutter 使用TabBar实现类似安卓中Fragment切换的效果

2024-05-12 05:38

本文主要是介绍Flutter 使用TabBar实现类似安卓中Fragment切换的效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TabBar使用步骤

  1. 继承StatefulWidget
  2. 页面必须实现SingleTickerProviderStateMixin
  3. 页面初始化时,实例化TabController
  4. 在TabBar和TabBarView组件中指定同一个controller

TabBar属性说明

属性

说明

tabs

一系列标签控件

controller

标签选择变化控制器

isScrollable

是否可滚动,默认false

indicatorColor

指示器颜色

indicatorWeight

指示器粗细

indicator

指示器

indicatorSize

指示器长短,tab:和tab一样长,label:和标签label 一样长

labelColor

选中标签颜色

labelStyle

选中标签样式

labelPadding

标签内边距

unselectedLabelColor

未选中标签颜色

unselectedLabelStyle

未选中标签样式

实现效果

具体实现如下

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';class TabBarDemo2 extends StatefulWidget {_TabBarDemo createState() => _TabBarDemo();
}class _TabBarDemo extends State<TabBarDemo2>with SingleTickerProviderStateMixin {TabController _tabController; //控制器int selectedItem = 0; //当前选择项@overridevoid initState() {_tabController = new TabController(length: 7, vsync: this);_tabController.addListener(() {print("index--------"+_tabController.index.toString());setState(() {selectedItem = _tabController.index;});_tabController.animateTo(_tabController.index);});}@overrideWidget build(BuildContext context) {return Scaffold(body: Container(child: Column(children: [Container(height: 50,margin: EdgeInsets.only(top: 50),child: TabBar(isScrollable: true, //是否可用滚动,默认falsecontroller: _tabController,onTap: (int index) {//点击监听setState(() {selectedItem = index;});},tabs: [Text('TAB1', style: TextStyle(color: Colors.black)),Text('TAB2', style: TextStyle(color: Colors.black)),Text('TAB3', style: TextStyle(color: Colors.black)),Text('TAB4', style: TextStyle(color: Colors.black)),Text('TAB5', style: TextStyle(color: Colors.black)),Text('TAB6', style: TextStyle(color: Colors.black)),Text('TAB7', style: TextStyle(color: Colors.black))]),),Expanded(flex: 1,child: TabBarView(controller: _tabController,children: [Text('TAB1内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),),Text('TAB2内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),),Text('TAB3内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),),Text('TAB4内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),),Text('TAB5内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),),Text('TAB6内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),),Text('TAB7内容',style:TextStyle(fontSize: 16.0, fontWeight: FontWeight.w700),)],),),],),),);}
}

 

 

这篇关于Flutter 使用TabBar实现类似安卓中Fragment切换的效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/981745

相关文章

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Java中的record使用详解

《Java中的record使用详解》record是Java14引入的一种新语法(在Java16中成为正式功能),用于定义不可变的数据类,这篇文章给大家介绍Java中的record相关知识,感兴趣的朋友... 目录1. 什么是 record?2. 基本语法3. record 的核心特性4. 使用场景5. 自定

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=