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(通过 showDatePicker、showTimePicker) |
日期/时间选择弹窗。 |
|
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 配合的通用动画构建器。 |
如何快速查找
- 官方 Widget Index:在 Flutter 文档的 “Widget catalog” 页面(https://docs.flutter.dev/ui/widgets )可以按 类别 浏览,也可以直接搜索关键字。
- Flutter Gallery:官方提供的示例应用展示了每个组件的实际效果,适合快速预览。
- 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 用于嵌入原生控件。





