Flutter核心 Widget 目录
面向日常开发的 Flutter 核心 Widget 导航。按“设计系统 → 基础分类 → 进阶主题”组织,便于快速选型与查找(基于 Flutter 3.35 稳定版)。
设计系统
- Material 3(Android/通用):
- 应用级:
MaterialApp、ThemeData、ColorScheme、Scaffold、AppBar、NavigationBar、NavigationRail、Drawer、TabBar、BottomSheet、Dialog、SnackBar。 - 交互控件:
ElevatedButton、FilledButton、TextButton、IconButton、FloatingActionButton、Checkbox、Radio、Switch、Slider、SegmentedButton、Chip、Badge、Tooltip。 - 列表/卡片:
ListTile、Card、ExpansionTile、DataTable、PaginatedDataTable、GridTile。
- 应用级:
- Cupertino(iOS/macOS 风格):
- 应用级:
CupertinoApp、CupertinoPageScaffold、CupertinoNavigationBar、CupertinoTabScaffold、CupertinoTabBar、CupertinoPageRoute。 - 交互控件:
CupertinoButton、CupertinoTextField、CupertinoSwitch、CupertinoSlider、CupertinoActivityIndicator、CupertinoActionSheet、CupertinoAlertDialog、CupertinoPicker、CupertinoDatePicker。
- 应用级:
- 社区设计系统(可选):
fluent_ui(Windows 风格)、macos_ui(macOS 风格)、yaru(Ubuntu 风格)等,按平台风格与设计规范选用。
基础 Widget 分类
无障碍(Accessibility)
- 结构语义:
Semantics、MergeSemantics、ExcludeSemantics。 - 可达性辅助:
Tooltip、Focus、FocusTraversalGroup、Shortcuts、Actions。
动画与动效(Animation & Motion)
- 隐式动画:
AnimatedContainer、AnimatedOpacity、AnimatedAlign、AnimatedPositioned、AnimatedScale、AnimatedSwitcher、AnimatedCrossFade、TweenAnimationBuilder。 - 显式动画:
AnimationController、AnimatedBuilder、AnimatedWidget、FadeTransition、ScaleTransition、SlideTransition、SizeTransition。 - 页面/共享元素:
Hero、PageRouteBuilder、AnimatedModalBarrier。
资源、图片与图标(Assets, Images, Icons)
- 图片:
Image(asset/network/file/memory)、FadeInImage、ImageIcon。 - 图标:
Icon、IconTheme、Icons(Material 图标集)。 - 资源声明:在
pubspec.yaml中通过assets:暴露资源目录。
异步(Async)
- 构建器:
FutureBuilder、StreamBuilder、ValueListenableBuilder。 - 状态快照:
AsyncSnapshot<T>(connectionState、hasData、hasError、data、error)。
基础与约束(Basics)
- 盒子与尺寸:
Container、SizedBox、ConstrainedBox、LimitedBox、FractionallySizedBox、AspectRatio、FittedBox、OverflowBox、IntrinsicWidth/Height(慎用,性能开销大)。 - 位置与对齐:
Padding、Align、Center、Baseline、Transform、Positioned(配合Stack)。 - 装饰与占位:
DecoratedBox、Card、Divider、VerticalDivider、Placeholder、Spacer。
输入与表单(Input & Forms)
- 文本与表单:
TextField、TextFormField、Form、FormField、FormState(校验/保存/重置)。 - 选择与滑块:
Checkbox、Radio、Switch、Slider、RangeSlider、DropdownButton、SegmentedButton、DatePicker/TimePicker(对应 Material/Cupertino 方案)。
交互模型(Interaction Models)
- 手势:
GestureDetector、InkWell、InkResponse、Listener、MouseRegion、FocusableActionDetector。 - 拖拽/滑动:
Dismissible、Draggable、LongPressDraggable、DragTarget、ReorderableListView。 - 事件屏蔽:
IgnorePointer、AbsorbPointer。
布局(Layout)
- 线性布局:
Row、Column、Flex(MainAxisAlignment、CrossAxisAlignment、MainAxisSize)。 - 比例/伸展:
Expanded、Flexible、Spacer、Expanded+FlexFit组合。 - 二维与流式:
Wrap、Flow、Table、GridView(亦属于滚动)。 - 叠放与定位:
Stack、Positioned、IndexedStack、LayoutBuilder(自适应布局)。
绘制与效果(Painting & Effects)
- 遮罩/裁剪:
ClipRRect、ClipPath、ClipOval、ShaderMask。 - 滤镜/透明度:
BackdropFilter、ColorFiltered、Opacity(注意会触发离屏绘制)。 - 物理形态:
PhysicalModel、PhysicalShape、DecoratedBox、RepaintBoundary(隔离重绘范围)。
滚动(Scrolling)
- 基础滚动:
SingleChildScrollView、ListView、GridView、PageView、Scrollable、ScrollController、Scrollbar。 - 下拉刷新:
RefreshIndicator。 - Sliver 体系:
CustomScrollView、SliverList、SliverGrid、SliverToBoxAdapter、SliverAppBar、SliverPersistentHeader、SliverFillRemaining、SliverPadding。
样式与响应式(Styling & Adaptive)
- 主题:
Theme、ThemeData、ColorScheme、DefaultTextStyle。 - 自适应:
MediaQuery、LayoutBuilder、OrientationBuilder、SafeArea、Expanded/Flexible组合实现伸缩。
文本(Text)
- 基础与富文本:
Text、SelectableText、RichText、TextSpan、WidgetSpan。 - 排版控制:
TextOverflow、TextAlign、TextHeightBehavior、DefaultTextStyle。
进阶主题
导航与路由(Navigation & Routing)
- Navigator 1.0:
Navigator.push/pop、MaterialPageRoute、CupertinoPageRoute、PageRouteBuilder(自定义转场)。 - Navigator 2.0(Router API):
Router、RouteInformationParser、RouterDelegate、BackButtonDispatcher(适用于 Web/桌面复杂路由)。 - 对话框/底部弹层:
showDialog、AlertDialog、showModalBottomSheet、BottomSheet、SnackBar、PopupMenuButton。
自适应与大屏(Adaptive & Large Screens)
- 屏幕信息:
MediaQuery、LayoutBuilder、OrientationBuilder。 - 结构布局建议:大屏优先考虑
NavigationRail、分栏布局(如Row+Expanded/Flexible)、SplitView(第三方)等。
常见页面骨架组合(实践向)
- 应用骨架:
MaterialApp→Scaffold→AppBar/NavigationBar/Drawer→ 页面body。 - 列表页面:
ListView.builder/GridView.builder+RefreshIndicator+ListTile/自定义卡片。 - 详情/转场:
Hero跨页共享元素 +PageRouteBuilder自定义转场。 - Tab 导航:
DefaultTabController+TabBar+TabBarView(或CupertinoTabScaffold)。
选型与实践建议(速查)
- 尺寸/位置:
- 固定尺寸优先
SizedBox;需内外边距选Container/Padding;按父约束比例选FractionallySizedBox。 - 居中用
Center,相对对齐用Align,绝对定位用Positioned+Stack。
- 固定尺寸优先
- 布局选择:
- 一维排布用
Row/Column;需换行用Wrap;复杂/稀疏二维尽量使用SliverGrid或GridView。 - 自适应断点优先
LayoutBuilder,再辅以MediaQuery。
- 一维排布用
- 滚动性能:
- 长列表用
ListView.builder/GridView.builder,极长/异构列表使用CustomScrollView+Sliver 家族。 - 频繁重建/复杂绘制区域用
RepaintBoundary隔离重绘。
- 长列表用
- 动画选型:
- 简单过渡优先隐式动画(
Animated*);联动/复杂序列使用显式(AnimationController+AnimatedBuilder)。
- 简单过渡优先隐式动画(
- 可达性:
- 重要区域添加
Semantics;交互元素补充Tooltip、合理的label与hint。
- 重要区域添加
相关视频
- 每周 Widget(Widget of the Week):1 分钟快速讲解系列,覆盖大量核心与新组件。
参考与致谢
- Flutter 官方文档 · 核心 Widget 目录:docs.flutter.cn/ui/widgets
- 文档更新时间(官方页面标注):2025-09-02。引用中文内容请注明出处与链接。