首页 > 其他分享 >Flutter一天一控件之ListTile

Flutter一天一控件之ListTile

时间:2023-05-22 15:36:13浏览次数:32  
标签:控件 Icons Text title ListTile 列表 Flutter

ListTile简介

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

一个简单的ListTile示例:

ListTile(
  leading: Icon(Icons.person), // 左侧图标
  title: Text('John Doe'), // 标题
  subtitle: Text('[email protected]'), // 副标题
  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('[email protected]'),
    ),
    ListTile(
      leading: Icon(Icons.account_circle),
      title: Text('Jane Doe'),
      subtitle: Text('[email protected]'),
    ),
    ListTile(
      leading: Icon(Icons.account_circle),
      title: Text('Bob Smith'),
      subtitle: Text('[email protected]'),
    ),
  ],
)

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

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

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

用ListTile来实现一个设置页面

用ListTile来实现一个设置页面,效果如下图: image.png

源码如下:

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

标签:控件,Icons,Text,title,ListTile,列表,Flutter
From: https://blog.51cto.com/u_15777557/6324666

相关文章

  • flutter dio自定义http client
    finaldio=Dio();DiogetMyDio(){initAdapter();dio.options.headers={'apiKey':'xxxxx'};dio.options.connectTimeout=constDuration(seconds:15);dio.options.receiveTimeout=constDuration(seconds:15);di......
  • 使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)
    使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)受本篇问答的启发http://stackoverflow.com/questions/11272847/make-uiview-in-uiscrollview-stick-to-the-top-when-scrolled-up修改代码如下注意:使UIScrollView的子控件self.letter在scrolling的过程中,子......
  • StackOverView又一个Android 5.0 任务管理器控件。这次这个比上次那个(MaterialRecents
    StackOverView视图布局(ViewLayout)★★★★★2015-09-2120:21147kbAndroidStudio1075次165次https://github.com/Bossyao168/StackOverView卡片,任务下载 收藏 Bossyao168 / StackOverViewacustomwidgetofandroid,liketaskmanagerofandr......
  • Flutter入门资料推荐
    前言群里很多入门小白不知道如何入门Flutter,水一篇文章简单介绍下本人学习过程中一些参考资料,方便Flutter小白少走弯路。非权威,推荐只针对本人经验来的说,大佬们不喜勿喷!资料列表书籍类第二版序|《Flutter实战·第二版》dio作者写滴,资料还是有保证,介绍比较全面,Flutter内容基......
  • 【记录一下】修正lazarus fr报表控件在龙芯电脑不能使用QRcode的Bug
    近日海南朋友使用fr控件时发现不能在报表插入QRCode和PDF417等二维码,经跟踪发现只需将frxBarcodePDF417.pas第1592行将A:=TInt(ERROR_LEVEL[errorLevel]);改为:A:=@(ERROR_LEVEL[errorLevel]);就可以正常插入QRCode等二维码了,如果你使用过程也遇到同样问题可参考一下......
  • Flutter安装会显示Android license status unknown.
    [Flutter安装问题(持续更新版)-简书](https://www.jianshu.com/p/55bca250ace4)问题1:XAndroidlicensestatusunknown.解决办法:安装一直卡死在这,主要是执行了他提示的那个license命令后,会显示“Androidsdkmanagertoolwasfound,butfailedtorun(D:\Android\AndroidSDK......
  • Flutter环境配置及Android Studio的使用
    [MacFlutter环境配置及AndroidStudio的使用-掘金](https://juejin.cn/post/7034299622856065055)[Flutter卡在"RunningGradletask'assembleDebug'..."-掘金](https://juejin.cn/post/7092175693466828836)[FlutterAppstuckat"RunningGradletas......
  • flutter系列之:使用AnimationController来控制动画效果
    目录简介构建一个要动画的widget让图像动起来总结简介之前我们提到了flutter提供了比较简单好用的AnimatedContainer和SlideTransition来进行一些简单的动画效果,但是要完全实现自定义的复杂的动画效果,还是要使用AnimationController。今天我们来尝试使用AnimationController来实现......
  • 报表控件FastReport VCL v2023.2 - 将Delphi 产品整合到单一系统
    FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开发中的报表信息输出为TXT、PDF等多种文件格式,是编程开发人员必备的报表工具。FastReportVC......
  • 界面控件DevExpress Blazor UI v22.2 - 报表、富文本编辑器组件增强
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具,该组件拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应用提供直观的解决方案,全面解决各种使用场......