我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何进行Flutter仿头条顶部tab切换实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何进行Flutter仿头条顶部tab切换实现

这期内容当中小编将会给大家带来有关如何进行Flutter仿头条顶部tab切换实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

概述

今天主要实现一个仿头条顶部tab切换实现,这种效果在项目中同样经常用到, 接下来我们就从头开始实现。

效果图

老规矩,开局先上效果图。

如何进行Flutter仿头条顶部tab切换实现

仿头条顶部tab切换实现

要实现这样的效果,需要使用TabBar进行实现。我们先讲一下TabBar的基本属性。

TabBar 和 TabBarView

TabBar是属于AppBar中的一个组件,通常和TabBarView结合使用。

TabBar构造方法及常用属性简介
const TabBar({    Key key,    @required this.tabs,    this.controller,    this.indicatorColor,    this.labelColor,    this.unselectedLabelColor,  })
属性名属性值类型说明
tabsTab类型的控件集合要显示的所有tab子项
controllerTabController类型主要用来监听tab的切换
indicatorColorColortab子项指示器的颜色
labelColorColor子项文字的颜色
unselectedLabelColorColor未选中子项文字的颜色
TabBarView构造方法及常用属性简介
  const TabBarView({      Key key,      @required this.children,      this.controller,    })
属性名属性值类型说明
childrenWidget的集合对应TabBar每个子项要显示的具体内容
controllerTabController类型主要用来监听tab的切换
简单使用

接下来我们将使用两种方式实现基本使用,第一种方式是配合DefaultTabController使用,另外一种是配合 TabController使用。在我们使用TabBar的时候必须放在Scaffold控件的AppBar中,如果我们的AppScaffold无法修改, 那我们需要在想要实现tab效果的页面上包裹一层Scaffold组件,要使用TabBar组件,必须为其指定TabController,要不然 会报错,我们先看第一种实现方式,在Scaffold组件外面包裹DefaultTabController实现。

DefaultTabController实现

首先,我们先准备需要切换的tab子项的集合和对应tab子项的具体显示内容。

  // 需要显示的tab子项集合  final tabs = <Tab>[    Tab(      text: "热门",    ),    Tab(      text: "新闻",    ),  ];  // 对应上述tab切换后具体需要显示的页面内容  final tabBarViews = <Widget>[    Center(      child: Text("热门Tab对应的界面"),    ),    Center(      child: Text("新闻Tab对应的界面"),    ),  ];

然后再HomePage页面定义一个TabBar实现。

  DefaultTabController(        length: tabs.length, // tab的个数        child: Scaffold(          appBar: AppBar(            title: TabBar(              tabs: tabs,            ),          ),          body: TabBarView(            children: tabBarViews,          ),        ),      );

正常情况下,我们的TabBar应该是对应appBar中的bottom属性的,但此处我们卸载了title属性下,是因为我们上层已经 有了一个appBar了,如果再把TabBar对应的写在appBar的bottom属性上,就会导致appBar留有一个空白非常难看,效果如下。 所以我们定义在了title属性上。

如何进行Flutter仿头条顶部tab切换实现

TabController实现

上述实现方式有个局限,就是我们点击切换tab的时候,往往需要监听同时更改页面状态。所以我们以TabController实现。 首先先看一下TabController的构造方法及属性。

  TabController({ int initialIndex = 0, @required this.length, @required TickerProvider vsync });
属性名属性值类型说明
initialIndexint初始选择的tab下标
lengthinttab的个数
vsyncTickerProvider提供动画等行为

要实现能动态改变状态的tab切换效果必须先继承StatefulWidget,因为TabController需要TickerProvider,所以我们同时 让我们stateMixins SingleTickerProviderStateMixin这个类。从而更容易的实现TabController,看一下具体的代码实现。

  class ThirdPage extends StatefulWidget {    @override    State createState() => _ThirdPageState();  }  class _ThirdPageState extends State<ThirdPage>      with SingleTickerProviderStateMixin {    TabController _tabController;    @override    void initState() {      super.initState();      _tabController = TabController(length: tabs.length, vsync: this);      _tabController.addListener(() => print("当前点击的是第${_tabController.index}个tab"));    }    @override    Widget build(BuildContext context) {      return Scaffold(        appBar: AppBar(          title: TabBar(            controller: _tabController,            tabs: tabs,          ),        ),        body: TabBarView(          controller: _tabController,          children: tabBarViews,        ),      );    }  }

至此,我们的仿头条tab切换效果已经实现了。

上述就是小编为大家分享的如何进行Flutter仿头条顶部tab切换实现了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何进行Flutter仿头条顶部tab切换实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何进行Flutter仿头条顶部tab切换实现

这期内容当中小编将会给大家带来有关如何进行Flutter仿头条顶部tab切换实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。概述今天主要实现一个仿头条顶部tab切换实现,这种效果在项目中同样经常用到,
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录