Flutter的Chip标签组件

本文详细介绍了 Flutter 中的 Chip 组件及其多种用法,包括如何创建不同样式的 Chips,如带有背景色、头像、删除按钮等,并展示了如何使用 Wrap 组件来管理和布局多个 Chip。此外还介绍了 ActionChip 和 FilterChip 的使用方法。

在这里插入图片描述

// Chip组件
class ChipDemo extends StatelessWidget {

  List<String> _tag = ['Android', 'ios', 'windows'];

  @override
  Widget build(BuildContext context) {
    return ListView(
      children: [
        Chip(
          label: Text('Flutter'),
        ),
        Chip(
          label: Text('Flutter'),
          backgroundColor: Colors.orange,
        ),
        Chip(
          label: Text('Flutter'),
          avatar: CircleAvatar(
            backgroundColor: Colors.green,
            child: Text('Flutter'),
          ),
        ),
        Chip(
          label: Text('Flutter'),
          avatar: CircleAvatar(
            backgroundImage: ExactAssetImage('assets/view.jpg'),
            child: Text('Flutter'),
          ),
        ),
        Chip(
          label: Text('Flutter'),
          // 删除回调
          onDeleted: () {},
          // 删除图标
          deleteIcon: Icon(Icons.delete),
          // 删除图标颜色
          deleteIconColor: Colors.redAccent,
          // 删除提示
          deleteButtonTooltipMessage: '删除这个标签',
        ),
        Wrap(
          spacing: 8.0,
          children: _tag.map((e) => Chip(
            label: Text('Android'),
            onDeleted: () {

            },
          )).toList(),
        ),
        Wrap(
          spacing: 8.0,
          children: _tag.map((e) => ActionChip(
            label: Text('Android'),
            onPressed: () {  },
          )).toList(),
        ),
        Wrap(
          spacing: 8.0,
          children: _tag.map((e) => FilterChip(
            label: Text('Android'),
            selected: e == 'Android',
            onSelected: (bool value) {

            },
          )).toList(),
        ),
        Wrap(
          spacing: 8.0,
          children: _tag.map((e) =>ChoiceChip(
            label: Text('Android'),
            selected: e == 'Android',
            selectedColor: Colors.redAccent,
            onSelected: (bool value) {

            },
          )).toList(),
        )
      ],
    );
  }
}
### Flutter 组件列表及用法 Flutter 是一个跨平台的 UI 框架,提供了丰富的组件库以帮助开发者构建美观且功能强大的应用程序。以下是一些常见的 Flutter 组件及其用法: #### 1. **ListView** `ListView` 是用于显示滚动列表的组件。它有两种主要的使用方式:静态列表和动态生成列表。 - 静态列表:所有列表项会被一次性构建并加载到内存中,适用于列表项较少的情况[^2]。 ```dart ListView( children: [ ListTile(title: Text('Item 1')), ListTile(title: Text('Item 2')), // Add more list items as needed ], ) ``` - 动态生成列表:通过 `ListView.builder` 实现,适用于列表项较多或需要按需加载的情况[^3]。 ```dart ListView.builder( itemCount: 100, itemBuilder: (context, index) { return ListTile(title: Text('Item $index')); }, ) ``` #### 2. **ListTile** `ListTile` 是一个常用的列表项组件,可以方便地创建带有标题、副标题、图标等的列表项[^3]。 ```dart ListTile( leading: Icon(Icons.person), title: Text('John Doe'), subtitle: Text('Subtitle here'), trailing: Icon(Icons.arrow_forward), selected: true, ) ``` #### 3. **Wrap** `Wrap` 是一种流式布局组件,当子组件超出屏幕范围时会自动换行。适合用于实现类似标签云的效果[^4]。 ```dart Wrap( spacing: 8.0, // 主轴方向间距 runSpacing: 4.0, // 纵轴方向间距 children: [ Chip(label: Text('Tag 1')), Chip(label: Text('Tag 2')), // Add more chips as needed ], ) ``` #### 4. **FutureBuilder** `FutureBuilder` 是一个用于异步数据处理的组件,可以根据 Future 的状态(加载中、完成、错误)来动态更新 UI[^1]。 ```dart FutureBuilder<String>( future: fetchData(), // 异步获取数据的函数 builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } else if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } else { return Text('Data: ${snapshot.data}'); } }, ) ``` #### 5. **Flow** `Flow` 是一个低级的布局组件,允许对子组件进行复杂的自定义布局[^4]。通常不直接使用,而是作为其他高级布局组件的基础。 ```dart Flow( delegate: TestFlowDelegate(margin: EdgeInsets.all(8.0)), children: <Widget>[ Container(color: Colors.red, width: 80.0, height: 80.0), Container(color: Colors.green, width: 80.0, height: 80.0), // Add more containers as needed ], ) ``` #### 6. **ScrollView** `ScrollView` 是一个基础的滚动容器组件,支持自定义滚动方向和物理效果[^3]。 ```dart SingleChildScrollView( scrollDirection: Axis.vertical, physics: BouncingScrollPhysics(), // iOS 弹簧效果 child: Column( children: [ // Add widgets here ], ), ) ``` #### 7. **Padding** `Padding` 用于为子组件添加内边距。 ```dart Padding( padding: EdgeInsets.all(16.0), child: Text('Padded Text'), ) ``` ### 总结 以上列举了一些常用的 Flutter 组件及其基本用法。每个组件都有其特定的适用场景,开发者可以根据实际需求选择合适的组件来构建应用界面。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值