Flutter一天一控件之ListTile(列表的实现)

2023-11-05

ListTile简介

Flutter中的ListTile控件是一种常用的列表项控件,它可以用于显示列表中的每一个项,通常包含标题、副标题、图标等内容。ListTile控件的外观和行为类似于Android中的ListView中的列表项。

一个简单的ListTile示例:

ListTile(
  leading: Icon(Icons.person), // 左侧图标
  title: Text('John Doe'), // 标题
  subtitle: Text('johndoe@example.com'), // 副标题
  trailing: Icon(Icons.arrow_forward), // 右侧图标
  onTap: () {
    // 点击事件处理
  },
)

上面的代码中,我们创建了一个ListTile控件,包含一个左侧图标、一个标题、一个副标题和一个右侧图标。我们还通过设置onTap属性来为ListTile添加了一个点击事件处理程序。

除了上面提到的属性外,ListTile还有许多其他属性,可以用来自定义其外观和行为。

常用的属性:

ListTile控件还提供了许多其他属性,可以用于自定义其外观和行为。例如,可以设置ListTile的onTap属性来为其添加一个点击事件处理程序,也可以使用selected属性来指定ListTile是否被选中。以下是一些常用的ListTile属性:

  • leading:用于指定ListTile的左侧图标或图像。
  • title:用于指定ListTile的标题文本。
  • subtitle:用于指定ListTile的副标题文本。
  • trailing:用于指定ListTile的右侧图标或图像。
  • onTap:用于指定ListTile的点击事件处理程序。
  • selected:用于指定ListTile是否被选中。
  • enabled:用于指定ListTile是否可用。
  • dense:用于指定ListTile是否应该显示紧凑。
  • contentPadding:用于指定ListTile的内边距。
  • selectedTileColor:用于指定ListTile被选中时的背景颜色。
  • shape:用于指定ListTile的形状,例如圆形或矩形。
  • subtitleTextStyle:用于指定副标题文本的样式。
  • titleTextStyle:用于指定标题文本的样式。

使用

当使用Flutter构建应用程序时,通常需要使用各种列表,例如商品列表、设置列表、消息列表等。这些列表通常需要将数据呈现为可滚动的列表,以便用户可以轻松地在列表中浏览和查找所需的数据。

Flutter的ListTile控件提供了一种方便的方式来显示列表中的每个项。ListTile控件是一个优雅的列表项控件,可以包含图标、标题、副标题、复选框、单选框、开关等元素。它可以用于构建各种类型的列表,包括设置、消息、通讯录、购物车等。

ListTile控件的用法非常简单,只需要创建一个ListTile的实例,然后将它添加到列表中即可。以下是一个简单的ListView示例,其中包含三个ListTile:

ListView(
  children: <Widget>[
    ListTile(
      leading: Icon(Icons.account_circle),
      title: Text('John Doe'),
      subtitle: Text('johndoe@example.com'),
    ),
    ListTile(
      leading: Icon(Icons.account_circle),
      title: Text('Jane Doe'),
      subtitle: Text('janedoe@example.com'),
    ),
    ListTile(
      leading: Icon(Icons.account_circle),
      title: Text('Bob Smith'),
      subtitle: Text('bobsmith@example.com'),
    ),
  ],
)

上面的代码中,我们使用ListView控件来创建一个可滚动的列表,其中包含三个ListTile。每个ListTile都包含一个左侧图标、一个标题和一个副标题,用于显示用户的姓名和电子邮件地址。

除了普通的ListTile之外,Flutter还提供了其他类型的ListTile,例如CheckboxListTile、RadioListTile和SwitchListTile等。这些控件都继承自ListTile,具有相同的外观和行为,但还具有额外的功能,例如开关、复选框和单选框等。

Flutter的ListTile控件是非常灵活和强大的,可以用于显示各种类型的列表项,同时还具有许多自定义选项,可以满足各种需求。

用ListTile来实现一个设置页面

用ListTile来实现一个设置页面,效果如下图:
在这里插入图片描述

源码如下:

import 'package:flutter/material.dart';


class SettingsPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView(
        // padding: EdgeInsets.symmetric(vertical: 16),
        children: [
          Container(
            padding: EdgeInsets.all(16),
            color: Colors.grey[200],
            child: Row(
              children: [
                CircleAvatar(
                  radius: 40,
                  backgroundImage: AssetImage('assets/profile_image.jpg'),
                ),
                SizedBox(width: 16),
                Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Text(
                      '江上清风山间明月',
                      style: TextStyle(fontSize: 18),
                    ),
                    Text(
                      '用户ID: 123456',
                      style: TextStyle(fontSize: 14, color: Colors.grey),
                    ),
                  ],
                ),
              ],
            ),
          ),
          // SizedBox(height: 16),
          // Container(
          //   color: Colors.grey,
          //   child: SizedBox(
          //     height: 16,
          //     child: Text(
          //       'Hello, SizedBox!',
          //       style: TextStyle(color: Colors.white, fontSize: 10),
          //     ),
          //   ),
          // ),
          SettingItem(icon: Icons.person, title: '个人信息'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.lock, title: '账号与安全'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.notifications, title: '消息通知'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.language, title: '语言'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.language, title: '语言'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.language, title: '语言'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.language, title: '语言'),
          Divider(indent: 60,),
          SettingItem(icon: Icons.language, title: '语言'),
          Divider(indent: 60,),
          // 添加更多的设置项...
        ],
      ),
    );
  }
}

class SettingItem extends StatelessWidget {
  final IconData icon;
  final String title;

  const SettingItem({required this.icon, required this.title,});

  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: Icon(icon),
      title: Text(title),
      trailing: Icon(Icons.arrow_forward_ios),
      onTap: ()=>{},
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter一天一控件之ListTile(列表的实现) 的相关文章

随机推荐

  • Hinton关于RBM的代码注解之(二)backpropclassify.m

    源代码 http www cs toronto edu hinton MatlabForSciencePaper html 这个是关于RBM的微调步骤的代码 代价函数是交叉熵 Version 1 000 Code provided by R
  • Springboot-aop(一)

    引入依赖
  • EfficientNet与EfficientDet论文解读

    这两项工作均来自Google Brain的大佬 EfficientDet可以看做EfficientNet的工作拓展 目前EfficientNet的代码已经开源 EfficientDet已经被复现 这两项工作的纸面效果看起来特别优秀 与其他工
  • Python3中PyMongo使用举例

    MongoDB是一个基于分布式文件存储的开源数据库 由C 语言编写 与平台无关 旨在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库中功能最丰富 最像关系数据库的 它
  • Bart模型应用实例及解析(二)————基于泰坦尼克号数据集的分类模型

    Bart模型应用实例及解析 二 基于泰坦尼克号数据集的分类模型 前言 一 数据集 1 数据集的获取 2 数据集变量名及意义 3 数据集处理 二 完整代码 三 代码运行结果及解析 1 数据描述性分析 2 建立Bart模型以及分析 3 各模型效
  • __HAL_TIM_SET_CAPTUREPOLARITY的巨坑

    本人在写输入捕获实验的时候使用HAL库中的函数 HAL TIM SET CAPTUREPOLARITY试图切换捕获极性 keil一直报错error expected error expected expression 原以为 HAL TIM
  • 51单片机---流水灯独立按键之控制速度

    文章目录 前言 一 问题 二 代码 前言 对于某些实验室的初级考核内容 以下是代码实例 一 问题 流水灯独立按键之控制速度 用按键控制led的流水灯的流速 要求 LED从左开始 然后左右来回流水 定义三个独立按键 按下按键 改变流速 要求实
  • go 面向对象的处理方式

    go语言特性 Golang语言没有C JAVA一样有面向对象 封装 继承 多态 相关的概念 但是面向对象只是一种编程思想 go借助于struct interface这两个go的数据类型可以实现面向对象的处理 struct是一种包含了数据成员
  • 决议要素_2020年每个网站测试人员的新年决议

    决议要素 您能够根据2019年的决议进行工作吗 我在这里听起来可能很可笑 但是作为Web开发人员 我在2019年的决心是在业余时间跳入Web测试 为什么 因此 我可以从测试人员的角度了解发布周期 我想穿他们的鞋子 从他们的眼神中看到SDLC
  • iframe视频加载完成前添加等待效果

    如图 在响应结果回来之前 保持转圈效果 代码 v loading 2 判断是否响应成功
  • intelliJ IDEA 编写邮箱注册功能报错 AddressException

    之前在myeclipse里面成功过一次 今天用intellij IDEA 来做新的项目 需要实现邮箱注册功能 写好后发现一直报AddressException的错误 网上查资料大多数说没有引入mail jar包 但查看库里有包 弄了一下午一
  • 网络安全初学者工具安装:Kali,Windows xp虚拟机,pikachu靶场,burpsuite安装配置,phpstudy安装(学习笔记)

    摘要 在互联网发展的时代背景下 网络安全成为了越来越不可忽视的重要领域 为此 各国都采取了维护网络安全的举措 对于网络安全人才的需求不断增大 我国作为世界上最多使用计算机人口的国家 对于网络安全人才更是供不应求 近年来 我国开始大力扶持网络
  • 组合预测模型

    组合预测模型 EMD GRU GRU时间序列预测对比 Matlab程序 目录 组合预测模型 EMD GRU GRU时间序列预测对比 Matlab程序 预测结果 基本介绍 程序设计 参考资料 预测结果
  • React+umi+ts+Ant Design前端框架搭建详解

    Ant Design是一个由Alibaba开发的优秀的UI库 它提供了很多易于使用和定制的高质量组件和样式 但是 React和Ant Design都不是完整的应用程序框架 因此需要其他工具和库来帮助我们构建前端应用 这些工具和库包括 Rea
  • jdk1.8的Future特性简介及使用场景

    文章目录 Future简介 什么是Future Future的使用场景 Future接口内部的常用方法 Future的常见用法 一 基础用法 重写Callable接口的call方法 放到异步线程的 submit方法中执行 代码实例 二 进阶
  • UEFI 之 Capsule Update (固件更新)

    概要 什么是UEFI Capsule Update呢 Capsule 顾名思义 是 胶囊 的意思 所以UEFI Capsule Update可以理解为胶囊式固件更新 UEFI规范定义了Firmware Management Protocol
  • 【华为OD机试真题 JS】靠谱的车

    标题 靠谱的车 时间限制 1秒 内存限制 262144K 语言限制 不限 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就
  • [Scala]001-初识

    Scala 发音 sk l 取自于 Scalable 可伸缩 可扩展的 Language简写 01 基本概念 1 多范式 多种编程方法 目前有四种程序设计方法 面向过程 面向对象 函数式 泛型 编程范式 programming paradi
  • latexit使用教程

    必备条件 下载MacTex mpkg zip并安装 写好test bib文件和test tex文件
  • Flutter一天一控件之ListTile(列表的实现)

    ListTile简介 Flutter中的ListTile控件是一种常用的列表项控件 它可以用于显示列表中的每一个项 通常包含标题 副标题 图标等内容 ListTile控件的外观和行为类似于Android中的ListView中的列表项 一个简