Flutter---ListTile列表项组件

概述:ListTile​​ 是 Flutter 中一个非常常用的 Material Design 列表项组件,专门用于构建列表中的每一项。

基本属性:

Dart 复制代码
ListTile(
  leading: Icon(Icons.person),        // 前导图标
  title: Text('用户名'),               // 主标题
  subtitle: Text('用户昵称'),          // 副标题
  trailing: Icon(Icons.arrow_forward), // 后置图标
  onTap: () {},                       // 点击事件
)

完整属性列表

Dart 复制代码
ListTile(
  // 1. 内容区域
  leading: Widget,                    // 左侧部件
  title: Widget,                      // 主标题
  subtitle: Widget,                   // 副标题
  trailing: Widget,                   // 右侧部件
  
  // 2. 交互相关
  onTap: () => void,                  // 点击回调
  onLongPress: () => void,            // 长按回调
  onFocusChange: (bool) => void,      // 焦点变化
  onTap: () => void,                  // 点击回调
  mouseCursor: MouseCursor,           // 鼠标样式
  enabled: bool,                      // 是否启用
  
  // 3. 样式相关
  style: ListTileStyle,               // 样式类型
  selected: bool,                     // 选中状态
  selectedColor: Color,               // 选中颜色
  iconColor: Color,                   // 图标颜色
  textColor: Color,                   // 文字颜色
  contentPadding: EdgeInsets,         // 内边距
  dense: bool,                        // 紧凑模式
  visualDensity: VisualDensity,       // 视觉密度
  shape: ShapeBorder,                 // 形状
  tileColor: Color,                   // 背景色
  selectedTileColor: Color,           // 选中背景色
  focusColor: Color,                  // 焦点颜色
  hoverColor: Color,                  // 悬停颜色
  splashColor: Color,                 // 水波纹颜色
  horizontalTitleGap: double,         // 标题水平间距
  minVerticalPadding: double,         // 最小垂直内边距
  minLeadingWidth: double,            // 最小前导宽度
  
  // 4. 辅助功能
  autofocus: bool,                    // 自动聚焦
  focusNode: FocusNode,               // 焦点节点
)

使用例子

Dart 复制代码
//========================修改性别的弹窗========================================//
  void changeGenderDialog() {
    showDialog(
      context: context,
      builder: (context) {
        return Dialog(
          backgroundColor: Colors.white, //背景颜色
          shape: RoundedRectangleBorder( //形状配置
            borderRadius: BorderRadius.circular(26),
          ),
          child: Container(
            width: 250, // 自定义宽度
            padding: EdgeInsets.all(16), // 内边距
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [

                // 男性选项
                ListTile(
                  dense: true, //紧凑模式
                  title: Text("男", style: TextStyle(fontSize: 16, color: Color(0xFF3D3D3D))),
                  trailing: _selectedGender == "男" //只有选中"男",才显示男性行尾部图标(三元运算符)
                      ? Image.asset("assets/images/cherry.png", width: 24, height: 24)
                      : null,
                  //点击事件
                  onTap: () {
                    Navigator.pop(context);//关闭对话框
                    setState(() {
                      _selectedGender = "男"; //更新性别变量值
                    });
                    widget.onGenderChanged("男");// 调用回调函数,传值回主页
                  },
                ),

                // 女性选项
                ListTile(
                  dense: true,//紧凑模式
                  title: Text("女", style: TextStyle(fontSize: 16, color: Color(0xFF3D3D3D))),
                  trailing: _selectedGender == "女" //只有选中"女",才显示女性行尾部图标
                      ? Image.asset("assets/images/cherry.png", width: 24, height: 24)
                      : null,
                  onTap: () {
                    Navigator.pop(context);
                    setState(() {
                      _selectedGender = "女";  //更新性别变量值
                    });
                    widget.onGenderChanged("女");// 调用回调函数,传值回主页
                  },
                ),
              ],
            ),
          ),
        );
      },
    );
  }
相关推荐
晚霞的不甘3 分钟前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
千逐6818 分钟前
《Flutter for OpenHarmony:星轨天气的粒子化气象宇宙可视化系统》
flutter
晚霞的不甘1 小时前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频
千逐682 小时前
气象流体场:基于 Flutter for OpenHarmony 的实时天气流体动力学可视化系统
flutter
一只大侠的侠2 小时前
Flutter开源鸿蒙跨平台训练营 Day12从零开发通用型登录页面
flutter·开源·harmonyos
晚霞的不甘2 小时前
Flutter for OpenHarmony天气卡片应用:用枚举与动画打造沉浸式多城市天气浏览体验
前端·flutter·云原生·前端框架
子春一2 小时前
Flutter for OpenHarmony:语桥 - 基于Flutter的离线多语言短语速查工具实现与国际化设计理念
flutter
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day 15React Native Formik 表单实战
flutter·开源·harmonyos
ujainu3 小时前
《零依赖!用 Flutter + OpenHarmony 构建鸿蒙风格临时记事本(一):内存 CRUD》
flutter·华为·openharmony
renke33643 小时前
Flutter for OpenHarmony:光影迷宫 - 基于局部可见性的沉浸式探索游戏设计
flutter·游戏