🎨 UI 组件详解

Flutter 提供了丰富的 UI 组件,用于构建美观的用户界面。本页面将详细介绍常用的 UI 组件。

📇 Card

Card 是一个材质设计的卡片组件,用于展示相关内容,通常包含标题、文本和图片。

渲染预览

卡片标题

这是卡片的内容部分

基本用法

Card(
  elevation: 4,
  shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(12),
  ),
  child: Padding(
    padding: EdgeInsets.all(16),
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(
          '卡片标题',
          style: TextStyle(
            fontSize: 18,
            fontWeight: FontWeight.bold,
          ),
        ),
        SizedBox(height: 8),
        Text('这是卡片的内容部分'),
      ],
    ),
  ),
)

常用属性

属性 类型 说明
child Widget 卡片内容
elevation double 阴影深度
shape ShapeBorder 卡片形状
color Color 卡片背景色
margin EdgeInsetsGeometry 外边距
💡 提示:Card 常用于列表项、信息展示块等场景,可以提升界面的层次感和美观度。

🏷️ Chip

Chip 是一个小型的信息标签,用于展示相关信息,如标签、选项、状态等。

渲染预览

A 标签文本 B 标签二

基本用法

Chip(
  label: Text('标签文本'),
  avatar: CircleAvatar(
    backgroundColor: Colors.blue.shade700,
    child: Text('A'),
  ),
  deleteIcon: Icon(Icons.close),
  onDeleted: () {
    print('删除标签');
  },
)

常用属性

属性 类型 说明
label Widget 标签文本
avatar Widget 头像
deleteIcon Widget 删除图标
onDeleted Function 删除回调
backgroundColor Color 背景色
💡 提示:Chip 常用于展示标签、过滤器选项、联系人信息等,支持删除操作。

➖ Divider

Divider 是一个水平分隔线,用于在内容之间创建视觉分隔。

渲染预览

第一部分内容

第二部分内容

基本用法

Column(
  children: [
    Text('第一部分内容'),
    Divider(
      height: 20,
      thickness: 2,
      color: Colors.grey,
    ),
    Text('第二部分内容'),
  ],
)

常用属性

属性 类型 说明
height double 分隔线高度(包含空白)
thickness double 分隔线粗细
color Color 分隔线颜色
indent double 起始缩进
endIndent double 结束缩进
💡 提示:Divider 常用于在列表项、章节标题之间创建分隔,提升可读性。

↔️ Spacer

Spacer 是一个灵活的空白空间组件,用于在 Flex 布局中占据剩余空间。

渲染预览

Row 中的 Spacer:

左侧内容
Spacer
右侧内容

Column 中的 Spacer:

顶部内容
Spacer
底部内容

基本用法

Row(
  children: [
    Text('左侧内容'),
    Spacer(),
    Text('右侧内容'),
  ],
)

// 在 Column 中使用
Column(
  children: [
    Text('顶部内容'),
    Spacer(),
    Text('底部内容'),
  ],
)

常用属性

属性 类型 说明
flex int 弹性系数,默认为 1
💡 提示:Spacer 只能在 Flex 容器(Row、Column、Flex)中使用,用于创建灵活的空白区域。

📱 AppBar

AppBar 是应用栏组件,通常位于页面顶部,包含标题、操作按钮等。

渲染预览

应用标题
🔍
⚙️

页面内容

基本用法

Scaffold(
  appBar: AppBar(
    title: Text('应用标题'),
    leading: IconButton(
      icon: Icon(Icons.menu),
      onPressed: () {
        print('打开菜单');
      },
    ),
    actions: [
      IconButton(
        icon: Icon(Icons.search),
        onPressed: () {
          print('搜索');
        },
      ),
      IconButton(
        icon: Icon(Icons.settings),
        onPressed: () {
          print('设置');
        },
      ),
    ],
    backgroundColor: Colors.blue,
    elevation: 4,
  ),
  body: Center(
    child: Text('页面内容'),
  ),
)

常用属性

属性 类型 说明
title Widget 标题
leading Widget 左侧按钮
actions List 右侧操作按钮列表
backgroundColor Color 背景色
elevation double 阴影深度
centerTitle bool 标题是否居中
💡 提示:AppBar 通常与 Scaffold 配合使用,提供导航和操作功能。

⭐ FloatingActionButton

FloatingActionButton (FAB) 是一个浮动操作按钮,用于执行主要的操作。

渲染预览

页面内容

+

基本用法

Scaffold(
  appBar: AppBar(
    title: Text('浮动按钮示例'),
  ),
  body: Center(
    child: Text('页面内容'),
  ),
  floatingActionButton: FloatingActionButton(
    onPressed: () {
      print('点击浮动按钮');
    },
    child: Icon(Icons.add),
    backgroundColor: Colors.blue,
    tooltip: '添加',
  ),
)

常用属性

属性 类型 说明
onPressed Function 点击回调
child Widget 按钮内容
backgroundColor Color 背景色
tooltip String 提示文本
elevation double 阴影深度
heroTag Object Hero 动画标签
💡 提示:FAB 通常用于执行页面最常用的操作,如添加、编辑、删除等。