【Flutter组件】ListTile 使用详解

ListTile参数说明

title

title 参数可以接受任何小部件,但通常是文本小部件

ListTile(
  title: Text('Horse'),
)

在这里插入图片描述

subtitle

副标题是标题下面较小的文本

ListTile(
  title: Text('Horse'),
  subtitle: Text('A strong animal'),
)

在这里插入图片描述

dense

使文本更小,并将所有内容打包在一起

ListTile(
  title: Text('Horse'),
  subtitle: Text('A strong animal'),
  dense: true,
)

在这里插入图片描述

leading

将图像或图标添加到列表的开头。这通常是一个图标。

ListTile(
  leading: CircleAvatar(
    backgroundImage: NetworkImage(imageUrl),
  ),
  title: Text('Horse'),
)

在这里插入图片描述

ListTile(
  leading: Icon(Icons.home),
  title: Text('House'),
)

在这里插入图片描述

trailing

设置拖尾将在列表的末尾放置一个图像。这对于指示主-细节布局特别有用。

ListTile(
  title: Text('Horse'),
  trailing: Icon(Icons.keyboard_arrow_right),
)

在这里插入图片描述

contentPadding

设置内容边距,默认是 16,但我们在这里设置为 0

ListTile(
  title: Text('Horse'),
  trailing: Icon(Icons.keyboard_arrow_right),
  contentPadding: EdgeInsets.symmetric(horizontal: 0.0),
)

在这里插入图片描述

selected

如果选中列表的 item 项,那么文本和图标的颜色将成为主题的主颜色。

ListTile(
  title: Text('Horse'),
  trailing: Icon(Icons.keyboard_arrow_right),
  selected: true,
)

在这里插入图片描述

手势识别

ListTile 可以检测用户的点击和长按事件,onTap 为单击,onLongPress 为长按。对于波纹效果是内置的

ListTile(
  title: Text('Horse'),
  onTap: () {
    // do something
  },
  onLongPress: (){
    // do something else
  },
)

在这里插入图片描述

enabled

通过将 enable 设置为 false,来禁止点击事件

ListTile(
  title: Text('Horse'),
  onTap: () {
    // this will not get called
  },
  enabled: false,
)

在这里插入图片描述

ListTile.divideTiles

静态方法 divideTiles 可以在 titles 之间添加分隔符

ListView(
  children: ListTile.divideTiles(
      context: context,
      tiles: [
        ListTile(
          title: Text('Horse'),
        ),
        ListTile(
          title: Text('Cow'),
        ),
        ListTile(
          title: Text('Camel'),
        ),
        ListTile(
          title: Text('Sheep'),
        ),
        ListTile(
          title: Text('Goat'),
        ),
      ]
  ).toList(),
)

在这里插入图片描述

使用实例

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'My App',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(title: Text('ListTile guide')),
        body: BodyWidget(),
      ),
    );
  }
}

String horseUrl = 'https://i.stack.imgur.com/Dw6f7.png';
String cowUrl = 'https://i.stack.imgur.com/XPOr3.png';
String camelUrl = 'https://i.stack.imgur.com/YN0m7.png';
String sheepUrl = 'https://i.stack.imgur.com/wKzo8.png';
String goatUrl = 'https://i.stack.imgur.com/Qt4JP.png';

class BodyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView(
      children: <Widget>[
        ListTile(
          leading: CircleAvatar(
            backgroundImage: NetworkImage(horseUrl),
          ),
          title: Text('Horse'),
          subtitle: Text('A strong animal'),
          trailing: Icon(Icons.keyboard_arrow_right),
          onTap: () {
            print('horse');
          },
          selected: true,
        ),
        ListTile(
          leading: CircleAvatar(
            backgroundImage: NetworkImage(cowUrl),
          ),
          title: Text('Cow'),
          subtitle: Text('Provider of milk'),
          trailing: Icon(Icons.keyboard_arrow_right),
          onTap: () {
            print('cow');
          },
        ),
        ListTile(
          leading: CircleAvatar(
            backgroundImage: NetworkImage(camelUrl),
          ),
          title: Text('Camel'),
          subtitle: Text('Comes with humps'),
          trailing: Icon(Icons.keyboard_arrow_right),
          onTap: () {
            print('camel');
          },
          enabled: false,
        ),
        ListTile(
          leading: CircleAvatar(
            backgroundImage: NetworkImage(sheepUrl),
          ),
          title: Text('Sheep'),
          subtitle: Text('Provides wool'),
          trailing: Icon(Icons.keyboard_arrow_right),
          onTap: () {
            print('sheep');
          },
        ),
        ListTile(
          leading: CircleAvatar(
            backgroundImage: NetworkImage(goatUrl),
          ),
          title: Text('Goat'),
          subtitle: Text('Some have horns'),
          trailing: Icon(Icons.keyboard_arrow_right),
          onTap: () {
            print('goat');
          },
        ),
      ],
    );
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Flutter中的DataTable使用详解,我可以为您提供以下内容: 1. DataTable简介 DataTable是Flutter中的一个控件,它可以用于显示表格数据。DataTable是由多个TableRow组成的,每个TableRow代表一行数据,每个TableCell代表一个单元格。 2. DataTable使用方法 a. 创建一个DataTable 创建一个DataTable需要使用DataTable构造函数,并传入两个必要参数:columns和rows。 columns代表表格的列,它是一个列表,每个元素都是一个DataColumn对象。DataColumn有两个必要参数:label和tooltip,分别代表列标题和列提示。 rows代表表格的数据,它是一个列表,每个元素都是一个DataRow对象。DataRow有两个必要参数:cells和selected,分别代表行数据和是否选中。 b. 设置DataTable属性 DataTable还有一些可选属性,可以用于自定义表格的样式和行为。例如: sortColumn:可以设置表格默认排序的列。 sortAscending:可以设置表格默认排序的顺序。 onSelectAll:可以设置全选和取消全选的回调函数。 3. DataTable示例 下面是一个简单的DataTable示例: ``` DataTable( columns: [ DataColumn(label: Text('Name')), DataColumn(label: Text('Age')), DataColumn(label: Text('Gender')), ], rows: [ DataRow(cells: [ DataCell(Text('Alice')), DataCell(Text('18')), DataCell(Text('Female')), ]), DataRow(cells: [ DataCell(Text('Bob')), DataCell(Text('20')), DataCell(Text('Male')), ]), DataRow(cells: [ DataCell(Text('Charlie')), DataCell(Text('22')), DataCell(Text('Male')), ]), ], ) ``` 以上就是Flutter中DataTable的使用方法和示例。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值