Flutter系列教程之(6)——Tab导航与ListView使用

目录

Tab导航

ListView的使用


Tab导航

效果图:

与原生的Android不同,flutter中使用Tab的步骤还算简单,不用写Adapter

Dart 复制代码
return DefaultTabController(
  //必传参数1
  length: 2,
  child: Scaffold(
	appBar: AppBar(
	  title:
	  Text('tab演示', style: TextStyle(color: Colors.white, fontSize: 18)),
	  centerTitle: true,
	  //必传参数2
	  bottom: TabBar(tabs: [
		Tab(
		  text: "标签1",
		),
		Tab(
		  text: "标签2",
		),
	  ],indicatorColor: Colors.white,labelStyle: TextStyle(fontSize: 16),),
	),
	//必传参数3
	body: TabBarView(children: [
	  TabContentPage("标签1"),
	  TabContentPage("标签2"),
	]),
  ),
);

当然,你可以根据自己需求封装个方法,必传的参数由length,TabBar和TabBarView

length表示有几个标签页,TabBar则表示上头的选项卡,你可以增加相关的参数来修改选项卡的样式,TabBarView则是选项卡对应的内容

PS:Tab这个Widget有个icon的参数,通过这个属性我们可以设置图标

TabBar这个Widget中,也是有多个参数,便于我们设置选项卡下方的横线指示器的颜色 宽度 边距,以及选项卡文字颜色等属性

ListView的使用

ListView使用的方式有多种,这里介绍一下简单的一种吧,使用ListView.builder构造ListView

ListView.builder中重要的两个参数为itemCount和itemBuilder,itemCount为子项item的数量,而itemBuilder则是子项的构造器,其类似于RecyclerViewAdapter的onBindViewHolder方法

Dart 复制代码
@override
  Widget build(BuildContext context) {
    return MyMaterialPage("listview的演示",_listView());
  }
  Widget _listView(){
    //构造数据
    var nameList = ["张三"];
    for(var i=0;i<50;i++){
      nameList.add("张三$i");
    }
    return new ListView.builder(
      //listview的子项item数量
      itemCount: nameList.length,
      padding: new EdgeInsets.all(5.0),
      itemBuilder: (BuildContext context, int index) {
        //返回每个子项item的widget
        //这里我只是简单拿到数据列表中的数据,并以此为参数构造成了显示姓名的Widget
        return _listItemView(nameList[index]);
      },
    );
  }
  Widget _listItemView(String name){
    return Row(
      children: [
        Center(child: Text(name),),
      ],
    );
  }

代码效果如图所示:

我写的demo中,为了方便起见,都是使用的StatelessWidget,一般来说,ListView使用的情形是根据网络请求获得数据,之后再将数据以列表的形式显示

这里简单的介绍一下吧,代码就不放出了,我们只需要让页面继承StatefulWidget,之后在请求数据之后使用setState去修改数据,从而实现页面的改变,详情请看Flutter系列教程之(4) 自定义Widget控件及相关知识

相关推荐
renke3364几秒前
Flutter for OpenHarmony:节奏方块 - 基于时间同步与连击机制的实时音乐游戏系统设计
flutter·游戏
晚霞的不甘25 分钟前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
千逐6840 分钟前
《Flutter for OpenHarmony:星轨天气的粒子化气象宇宙可视化系统》
flutter
晚霞的不甘2 小时前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频
千逐682 小时前
气象流体场:基于 Flutter for OpenHarmony 的实时天气流体动力学可视化系统
flutter
一只大侠的侠2 小时前
Flutter开源鸿蒙跨平台训练营 Day12从零开发通用型登录页面
flutter·开源·harmonyos
晚霞的不甘2 小时前
Flutter for OpenHarmony天气卡片应用:用枚举与动画打造沉浸式多城市天气浏览体验
前端·flutter·云原生·前端框架
子春一3 小时前
Flutter for OpenHarmony:语桥 - 基于Flutter的离线多语言短语速查工具实现与国际化设计理念
flutter
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day 15React Native Formik 表单实战
flutter·开源·harmonyos
ujainu3 小时前
《零依赖!用 Flutter + OpenHarmony 构建鸿蒙风格临时记事本(一):内存 CRUD》
flutter·华为·openharmony