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

news2024/10/6 14:35:40

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 {
  
  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,});

  
  Widget build(BuildContext context) {
    return ListTile(
      leading: Icon(icon),
      title: Text(title),
      trailing: Icon(Icons.arrow_forward_ios),
      onTap: ()=>{},
    );
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大流量卡介绍:网上的大流量卡都是怎么来的?

大流量卡介绍&#xff0c;你知道网上的大流量卡都是怎么来的&#xff1f; 其实&#xff0c;网上29元155G、39元180G的优惠套餐&#xff0c;本身都是我们常见的流量卡如电信星卡、联通王卡、移动花卡等等&#xff0c;之所以这么便宜&#xff0c;只不过运营商在这些套餐上面增加…

【新星计划】数据库 排名函数 初识

数据库 排名函数 初识 查询排序初识排名函数row_number()rank()dense_rank()ntile()percent_rank() 开窗函数为聚合函数使用开窗函数 小结 查询排序 在日常工作中&#xff0c;我们对所有需要的数据都会进行一个排序操作&#xff0c;以获得我们最需要的数据。 排序指令 order …

Unreal Niagara粒子入门1

记录下学习Niagara粒子的过程&#xff0c;这次调的是比较简单的一个效果&#xff1a; 使用了随粒子生命的缩放、打开速率解算、基本的发射器和Niagara容器。 1.创建Niagara Niagara中&#xff0c;发射器和NiagaraSystem文件是可以分开创建的&#xff1a; 通常直接点Niagara…

GPT-2(Transformer Decoder)的TensorFlow实现(附源码)

文章目录 一、GPT2实现步骤二、源码 一、GPT2实现步骤 机器学习模型的开发实现步骤一般都包含以下几个部分&#xff1a;   1. 遵照模型的网络架构&#xff0c;实现每一层&#xff08;Layer/Block&#xff09;的函数&#xff1b;   2. 将第1步中的函数组合在一起&#xff0c…

微信小程序nodejs+vue校园快递代拿系统uniapp校园互助系统

语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 平台旨在解决目前大学生找人帮忙&#xff0c;难&#xff0c;慢&#xff0c;不可靠以及想兼职同学找不到好的平台的问题。对于招人帮忙的…

应急演练脚本编写的几个步骤

应急演练是一项非常重要的活动&#xff0c;对于保障企业的安全和稳定运行至关重要。而一个完整的应急演练需要编写一个详细的脚本来指导演练过程。以下是应急演练脚本编写的几个步骤。 定义演练场景 首先&#xff0c;需要定义演练场景&#xff0c;这将决定演练的目标和方向。在…

美国原装二手 SR560 低噪声电压前置放大器

Stanford Research SR560低噪声电压前置放大器 ​Stanford Research SR560 是一款高性能、低噪声前置放大器&#xff0c;适用于各种应用&#xff0c;包括低温测量、光学检测和音频工程。 SR560 具有一个具有 4 nV/√Hz 输入噪声和 100 MΩ 输入阻抗的差分前端。完整的噪声系数…

三招教你图片文字转语音怎么转

随着数字化时代的到来&#xff0c;人们对于数字信息的获取和处理需求越来越大&#xff0c;而图片文字转语音技术正是为了满足这一需求而诞生的。这项技术不仅可以辅助视力障碍者&#xff0c;让他们能更轻松地获取信息和理解内容&#xff0c;而且也可以帮助正在学习外语的人们练…

Menards EDI对接流程

Menards是一家美国的家居建材零售商&#xff0c;成立于1962年&#xff0c;总部位于美国威斯康星州的伊甸谷市。该公司经营各种家居建材产品&#xff0c;包括木材、地板、墙纸、厨房卫浴用品等&#xff0c;并拥有超过300家门店&#xff0c;分布在美国中西部和北部地区。Menards的…

2023智能座舱新趋势洞察

两年一度的上海车展于4月底正式落幕&#xff0c;怿星科技市场总监老崔率团队奔赴考察&#xff0c;经过多日分析整理&#xff0c;围绕车展发布车型为核心&#xff0c;制作了怿星科技2023智能座舱趋势洞察报告&#xff0c;现将报告分享如下。 01 车展简述 汽车行业进入新时代 本…

DVB-S中卫星通信系统的基带仿真(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 ​数字视频广播(DVB)在卫星通信数字多媒体业务领域应用广泛,其一般采用MPEG-2编码、数字传输和纠错处理等通用技术,然而,当第三方…

LeetCode 117. 填充每个节点的下一个右侧节点指针 II

117. 填充每个节点的下一个右侧节点指针 II 描述 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 …

csgo搬砖人必知:未来csgo饰品会一路走低吗?市场回暖到底还要多久?

csgo搬砖人必知&#xff1a;未来csgo饰品会一路走低吗&#xff1f;市场回暖到底还要多久&#xff1f; 最后一届巴黎major终于落下帷幕&#xff0c;Vitality小蜜蜂2-0战胜GL成功赢下本次Major冠军&#xff0c;也是首次夺得Major冠军&#xff01;有人欢喜有人忧啊&#xff0c;cs…

Phaser笔记文档阅读-Working with Phaser, TypeScript and webpack – step 1

首先得安装好npm和node.js。 创建一个空文件夹如&#xff1a;phaserwebpack&#xff0c;这里我使用webstorm打开&#xff0c;打开终端&#xff1a; 运行&#xff1a; npm init -y 执行上面的命令成功后会自动创建package.json文件。随后安装phaser&#xff1a; npm install…

常用性能测试工具选择所需要考虑的因素

在软件开发和应用中&#xff0c;性能问题是一个非常普遍的问题。进行性能测试已经成为了软件开发和应用必不可少的一步。而性能测试工具就是进行性能测试的关键。市面上有许多种不同类型的性能测试工具&#xff0c;如何选择合适的工具呢&#xff1f;以下是一些常用性能测试工具…

SpringCloud(注册中心)

分布式架构与微服&#xff1a;【restfu分格&#xff08;入参的分格&#xff09;---rest分格&#xff08;请求的分格&#xff09;】 微服务&#xff1a; 单体架构的应用场景&#xff1a; 微服务的应用场景&#xff1a; 上百个服务---服务于服务之间是有依赖关系的 什么是spring…

Shell运维实战1-核心与数值计算

目录 Shell 初步入门Shell 分类幻数注释 Shell 核心与实践变量引号输出特殊变量特殊状态变量bash 内置变量命令变量子串特殊扩展变量 Shell 变量数值计算实践基本算术运算符双小括号letexprbcawkread Shell 初步入门 Shell 分类 对于 Unix/Linux 两种系统&#xff0c;shell 主…

导入/导出 OpenAPI 不再是问题,这个开源管理工具可以!

导入 OpenAPI 插件 支持导入 OpenAPI 3.0 版本的文件&#xff0c;如果您使用 Swagger1.0/2.0&#xff0c;可以访问这个在线地址 转换为 3.0 再导入。 使用 导入功能有多个入口&#xff0c;你可以在 API 分组处点击加号导入 API&#xff1a; 也可以在设置页面导入 导出 OpenAP…

第17章_触发器

第17章_触发器 在实际开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;有 2 个或者多个相互关联的表&#xff0c;如商品信息和库存信息分别存放在 2 个不同的数据表中&#xff0c;我们在添加一条新商品记录的时候&#xff0c;为了保证数据的完整性&#xff0c;必须同时…

Android和iOS双端赞奇超级云盘APP公测版正式上线!

赞奇云工作站自发布以来&#xff0c;经过层层迭代和升级&#xff0c;以云工作站、赞奇超级云盘、软件中心、云渲染等功能&#xff0c;更高效地整合打通各行设计业务全流程&#xff0c;实现云上数字内容创作的完美呈现&#xff0c;取得了广大用户的喜爱和认可。 现在&#xff0…