Flutter 常用控件

1. 布局类(Layout Widgets)

负责在屏幕上组织、定位其他子组件。

组件

主要用途

Container

最通用的盒子,可设置尺寸、边距、背景、圆角、阴影等。

Row / Column

水平或垂直线性布局,配合 Expanded / Flexible 实现弹性占位。

Stack

层叠布局,子组件可以使用 Positioned 准确定位。

SizedBox

固定宽高的占位盒,常用于间距或强制尺寸。

Padding

为子组件添加内边距。

Center

将子组件居中对齐。

Align

按对齐系数(Alignment)定位子组件。

AspectRatio

按比例约束子组件尺寸。

Wrap

自动换行布局,适合标签、按钮集合。

Flex

Row/Column 的底层实现,可自定义方向。

Expanded / Flexible

在 Row/Column 中分配剩余空间,实现弹性布局。

ListView / GridView

可滚动的列表或网格,支持懒加载。

SingleChildScrollView

为单个子组件提供滚动能力。

CustomScrollView + Sliver 系列(如 SliverList、SliverGrid

高度可定制的滚动视图,配合 SliverAppBar 实现折叠效果。

这些布局组件在官方文档的 “Base widgets” 中都有详细说明;中文教程也列举了常用的 Container、Row/Column、Stack、Expanded、ListView、GridView 等。

2. 输入与表单类(Input & Form Widgets)

用于获取用户交互信息。

组件

主要用途

TextField / TextFormField

单行或多行文本输入,配合 Form 进行验证。

Checkbox / CheckboxListTile

勾选框,适合二元选择。

Radio / RadioListTile

单选按钮组。

Switch / SwitchListTile

开关式二元选择。

Slider / RangeSlider

滑块,获取连续数值。

DatePicker / TimePicker(通过 showDatePickershowTimePicker

日期/时间选择弹窗。

DropdownButton / DropdownMenu

下拉选择列表。

Form

表单容器,统一管理验证与提交。

FocusScope / FocusNode

管理键盘焦点,提升表单体验。

官方文档把这些归为 “Input” 类别,专门提供交互功能。

3. 按钮与交互类(Button & Interaction Widgets)

组件

主要用途

ElevatedButton

带阴影的凸起按钮(Material 3 默认)。

TextButton

无背景的文字按钮。

OutlinedButton

带描边的按钮。

IconButton

只显示图标的按钮,常用于工具栏。

FloatingActionButton

悬浮的圆形按钮,适合主操作。

GestureDetector

捕获手势(点击、双击、长按、拖拽等)。

InkWell / InkResponse

带水波纹效果的点击区域,常用于 Material 交互。

MouseRegion

处理鼠标悬停、指针样式(桌面/Web)。

AbsorbPointer / IgnorePointer

阻止子组件接收指针事件。

交互模型在官方文档的 “Interaction Models” 中有完整列表[[5]];中文教程也提到 IconButton、RaisedButton、FlatButton、OutlineButton、FloatingActionButton 等。

4. 视觉与装饰类(Visual & Decoration Widgets)

组件

主要用途

Image(network、asset、file)

显示图片资源。

Icon

显示 Material 或自定义图标。

CircleAvatar

圆形头像,常用于用户头像。

ClipRect / ClipRRect / ClipOval / ClipPath

裁剪子组件形状。

Opacity

设置透明度。

BackdropFilter

高斯模糊等后处理效果。

CustomPaint

自定义绘制(绘图、动画等)。

ShaderMask

为子组件添加渐变/着色器。

DecoratedBox / BoxDecoration

为容器添加背景、圆角、阴影等装饰。

Hero

页面切换时共享元素动画。

AnimatedContainer / AnimatedOpacity / AnimatedPositioned

简易属性动画。

AnimatedSwitcher

子组件切换时自动淡入淡出。

这些属于 “Painting and effects” 与 “Styling” 分类。

5. Material 设计组件(Material Widgets)

实现 Google Material Design(包括 Material 3)规范的完整 UI 组件。

组件

主要用途

Scaffold

页面骨架,提供 AppBar、Drawer、FloatingActionButton、BottomNavigationBar 等结构。

AppBar

顶部导航栏。

BottomNavigationBar

底部标签栏。

TabBar / TabBarView

顶部或底部的标签切换。

Drawer / NavigationRail

侧边抽屉或侧边导航。

Card

带阴影的卡片容器。

ListTile

列表项,常配合 ListView 使用。

Chip / InputChip / ChoiceChip

小标签或可选标签。

SnackBar

短暂的底部提示。

Dialog / AlertDialog / SimpleDialog

弹出对话框。

Tooltip

悬停提示。

ProgressIndicator(CircularProgressIndicator、LinearProgressIndicator)

加载进度指示。

Slider / RangeSlider

同上,Material 风格。

Switch

同上,Material 风格。

ExpansionPanel / ExpansionTile

可展开的列表项。

PaginatedDataTable

分页数据表格。

官方文档把 Material 组件归为 “Material Components” 部分。

6. Cupertino(iOS)设计组件(Cupertino Widgets)

提供 iOS 原生外观的 UI 元素。

组件

主要用途

CupertinoApp

iOS 风格的根组件。

CupertinoPageScaffold

iOS 风格页面骨架。

CupertinoNavigationBar

顶部导航栏。

CupertinoTabBar / CupertinoTabScaffold

底部标签栏。

CupertinoButton

iOS 风格按钮。

CupertinoSwitch

iOS 风格开关。

CupertinoSlider

iOS 风格滑块。

CupertinoSegmentedControl

分段选择器。

CupertinoTextField

iOS 风格文本输入框。

CupertinoAlertDialog

iOS 风格弹窗。

CupertinoActivityIndicator

iOS 风格加载指示。

这些属于官方文档的 “Platform widgets” 章节,提供跨平台的原生外观。

7. 平台视图(Platform View)

在 Flutter 中嵌入原生 Android / iOS 控件(如 WebView、地图等)。

组件

主要用途

AndroidView

嵌入 Android 原生 View(如 WebView、VideoView)。

UiKitView

嵌入 iOS 原生 UIView(如 WKWebView)。

PlatformViewLink

更灵活的原生视图桥接。

官方文档专门说明了 PlatformView 用于显示原生视图的场景;中文教程也提到它是实现原生控件(如高德地图、视频播放器)的关键。

8. 其它常用基础组件

组件

说明

Text

显示文字,可自定义样式、对齐、溢出处理。

RichText

支持多样式的富文本。

DefaultTextStyle

为子树统一文字样式。

Theme / ThemeData

全局主题配置(颜色、字体、形状)。

MediaQuery

获取屏幕尺寸、像素密度、系统文字缩放等信息。

LayoutBuilder

根据父容器约束动态构建子组件。

FutureBuilder / StreamBuilder

异步数据(Future、Stream)渲染。

InheritedWidget / Provider

状态共享与依赖注入。

ValueListenableBuilder

监听 ValueNotifier 的变化。

AnimatedBuilder

与 AnimationController 配合的通用动画构建器。

如何快速查找

  1. 官方 Widget Index:在 Flutter 文档的 “Widget catalog” 页面(https://docs.flutter.dev/ui/widgets )可以按 类别 浏览,也可以直接搜索关键字。
  2. Flutter Gallery:官方提供的示例应用展示了每个组件的实际效果,适合快速预览。
  3. IDE 自动补全:在 Android Studio / VS Code 中输入 Widget 名称的前缀,会弹出完整列表,协助发现不常用的组件。

小结

  • 布局:Container、Row/Column、Stack、Flex、ListView、GridView、Sliver 系列等。
  • 输入/表单:TextField、Checkbox、Radio、Switch、Slider、DropdownMenu 等。
  • 按钮/交互:ElevatedButton、TextButton、IconButton、FloatingActionButton、GestureDetector、InkWell。
  • 视觉装饰:Image、Icon、 CircleAvatar、Clip、Opacity、CustomPaint、Hero、Animated 系列。
  • Material 组件:Scaffold、AppBar、Drawer、BottomNavigationBar、Card、ListTile、SnackBar、Dialog 等。
  • Cupertino 组件:CupertinoApp、CupertinoPageScaffold、CupertinoNavigationBar、CupertinoButton 等。
  • 平台视图:AndroidView、UiKitView 用于嵌入原生控件。
© 版权声明

相关文章

暂无评论

none
暂无评论...