Flutter 中的 Card 小部件:全面指南

Flutter 中的 Card 小部件:全面指南

在 Flutter 中,Card 是一个用于呈现内容的容器,它带有圆角边缘和阴影效果,常用于展示信息块,如用户头像、相册、笔记或任何需要突出显示的内容。Card 小部件提供了一种简单而直观的方式来增强应用的 UI 视觉效果。

基础用法

Card 小部件最基本的用法是包裹其他小部件,为其添加圆角和阴影:

dart 复制代码
Card(
  child: Text('Hello, World!'),
)

这将创建一个带有简单文本的卡片。

定制化属性

Card 提供了多种属性来定制其外观:

颜色和形状

  • color: 设置卡片的背景颜色。
  • shape: 设置卡片的形状,如圆角的大小。
dart 复制代码
Card(
  color: Colors.blueGrey,
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
  child: Text('Colored Card'),
)

边距和填充

  • margin: 设置卡片的外边距。
  • clipBehavior: 控制卡片的裁剪行为。
dart 复制代码
Card(
  margin: EdgeInsets.all(10.0),
  clipBehavior: Clip.antiAlias,
  child: Padding(
    padding: EdgeInsets.all(8.0),
    child: Text('Padded Card'),
  ),
)

装饰

通过 elevation 属性,可以设置卡片的阴影大小:

dart 复制代码
Card(
  elevation: 8.0,
  child: Text('Elevated Card'),
)

实例:自定义卡片

下面是一个使用 Card 创建自定义卡片的实例,其中包含了图片和文本:

dart 复制代码
Card(
  elevation: 5.0,
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
  child: Row(
    children: <Widget>[
      Image.network(
        'https://example.com/image.jpg',
        height: 100.0,
        width: 100.0,
        fit: BoxFit.cover,
      ),
      Expanded(
        child: Padding(
          padding: EdgeInsets.all(10.0),
          child: Text(
            'This is a custom card with an image and text.',
            textScaleFactor: 1.2,
          ),
        ),
      ),
    ],
  ),
)

卡片列表

Card 常与 ListView 结合使用,创建卡片列表:

dart 复制代码
ListView(
  children: <Widget>[
    Card(
      child: ListTile(
        title: Text('Card 1'),
        subtitle: Text('This is the subtitle of the first card.'),
      ),
    ),
    Card(
      child: ListTile(
        title: Text('Card 2'),
        subtitle: Text('This is the subtitle of the second card.'),
      ),
    ),
    // ... 更多卡片
  ],
)

高级布局

Card 可以嵌套使用,创建复杂的布局:

dart 复制代码
Card(
  margin: EdgeInsets.all(10.0),
  child: Column(
    children: <Widget>[
      Padding(
        padding: EdgeInsets.all(8.0),
        child: Text('Card Title'),
      ),
      Card(
        margin: EdgeInsets.zero,
        child: ListTile(
          title: Text('Inner Card'),
          subtitle: Text('This is an inner card inside the main card.'),
        ),
      ),
    ],
  ),
)

性能考虑

在列表中使用大量 Card 时,确保使用 ListView.builder 来实现懒加载,以提高性能:

dart 复制代码
ListView.builder(
  itemCount: items.length,
  itemBuilder: (context, index) {
    return Card(
      child: ListTile(
        title: Text(items[index]),
      ),
    );
  },
)

结语

Card 是 Flutter 中一个非常实用的小部件,它提供了一种快速且有效的方式来展示信息。通过合理使用 Card,你可以增强应用的 UI 视觉效果,同时保持布局的整洁和有序。掌握 Card 的使用,可以帮助你创建出既美观又实用的用户界面。

相关推荐
一只大侠的侠30 分钟前
【Harmonyos】Flutter开源鸿蒙跨平台训练营 Day 2 鸿蒙跨平台开发环境搭建与工程实践
flutter·开源·harmonyos
微祎_1 小时前
Flutter for OpenHarmony:构建一个 Flutter 平衡球游戏,深入解析动画控制器、实时物理模拟与手势驱动交互
flutter·游戏·交互
ZH15455891313 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
renke33643 小时前
Flutter for OpenHarmony:构建一个 Flutter 色彩调和师游戏,RGB 空间探索、感知色差计算与视觉认知训练的工程实现
flutter·游戏
王码码20353 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
ujainu5 小时前
Flutter + OpenHarmony 实现经典打砖块游戏开发实战—— 物理反弹、碰撞检测与关卡系统
flutter·游戏·openharmony·arkanoid·breakout
微祎_5 小时前
构建一个 Flutter 点击速度测试器:深入解析实时交互、性能度量与响应式 UI 设计
flutter·ui·交互
王码码20355 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
ZH15455891316 小时前
Flutter for OpenHarmony Python学习助手实战:Web开发框架应用的实现
python·学习·flutter
晚霞的不甘6 小时前
Flutter for OpenHarmony 构建简洁高效的待办事项应用 实战解析
flutter·ui·前端框架·交互·鸿蒙