Flutter核心 Widget 目录

81 阅读3分钟

Flutter核心 Widget 目录

面向日常开发的 Flutter 核心 Widget 导航。按“设计系统 → 基础分类 → 进阶主题”组织,便于快速选型与查找(基于 Flutter 3.35 稳定版)。

设计系统

  • Material 3(Android/通用)
    • 应用级:MaterialAppThemeDataColorSchemeScaffoldAppBarNavigationBarNavigationRailDrawerTabBarBottomSheetDialogSnackBar
    • 交互控件:ElevatedButtonFilledButtonTextButtonIconButtonFloatingActionButtonCheckboxRadioSwitchSliderSegmentedButtonChipBadgeTooltip
    • 列表/卡片:ListTileCardExpansionTileDataTablePaginatedDataTableGridTile
  • Cupertino(iOS/macOS 风格)
    • 应用级:CupertinoAppCupertinoPageScaffoldCupertinoNavigationBarCupertinoTabScaffoldCupertinoTabBarCupertinoPageRoute
    • 交互控件:CupertinoButtonCupertinoTextFieldCupertinoSwitchCupertinoSliderCupertinoActivityIndicatorCupertinoActionSheetCupertinoAlertDialogCupertinoPickerCupertinoDatePicker
  • 社区设计系统(可选)fluent_ui(Windows 风格)、macos_ui(macOS 风格)、yaru(Ubuntu 风格)等,按平台风格与设计规范选用。

基础 Widget 分类

无障碍(Accessibility)

  • 结构语义SemanticsMergeSemanticsExcludeSemantics
  • 可达性辅助TooltipFocusFocusTraversalGroupShortcutsActions

动画与动效(Animation & Motion)

  • 隐式动画AnimatedContainerAnimatedOpacityAnimatedAlignAnimatedPositionedAnimatedScaleAnimatedSwitcherAnimatedCrossFadeTweenAnimationBuilder
  • 显式动画AnimationControllerAnimatedBuilderAnimatedWidgetFadeTransitionScaleTransitionSlideTransitionSizeTransition
  • 页面/共享元素HeroPageRouteBuilderAnimatedModalBarrier

资源、图片与图标(Assets, Images, Icons)

  • 图片Imageasset/network/file/memory)、FadeInImageImageIcon
  • 图标IconIconThemeIcons(Material 图标集)。
  • 资源声明:在 pubspec.yaml 中通过 assets: 暴露资源目录。

异步(Async)

  • 构建器FutureBuilderStreamBuilderValueListenableBuilder
  • 状态快照AsyncSnapshot<T>connectionStatehasDatahasErrordataerror)。

基础与约束(Basics)

  • 盒子与尺寸ContainerSizedBoxConstrainedBoxLimitedBoxFractionallySizedBoxAspectRatioFittedBoxOverflowBoxIntrinsicWidth/Height(慎用,性能开销大)。
  • 位置与对齐PaddingAlignCenterBaselineTransformPositioned(配合 Stack)。
  • 装饰与占位DecoratedBoxCardDividerVerticalDividerPlaceholderSpacer

输入与表单(Input & Forms)

  • 文本与表单TextFieldTextFormFieldFormFormFieldFormState(校验/保存/重置)。
  • 选择与滑块CheckboxRadioSwitchSliderRangeSliderDropdownButtonSegmentedButtonDatePicker/TimePicker(对应 Material/Cupertino 方案)。

交互模型(Interaction Models)

  • 手势GestureDetectorInkWellInkResponseListenerMouseRegionFocusableActionDetector
  • 拖拽/滑动DismissibleDraggableLongPressDraggableDragTargetReorderableListView
  • 事件屏蔽IgnorePointerAbsorbPointer

布局(Layout)

  • 线性布局RowColumnFlexMainAxisAlignmentCrossAxisAlignmentMainAxisSize)。
  • 比例/伸展ExpandedFlexibleSpacerExpanded+FlexFit 组合。
  • 二维与流式WrapFlowTableGridView(亦属于滚动)。
  • 叠放与定位StackPositionedIndexedStackLayoutBuilder(自适应布局)。

绘制与效果(Painting & Effects)

  • 遮罩/裁剪ClipRRectClipPathClipOvalShaderMask
  • 滤镜/透明度BackdropFilterColorFilteredOpacity(注意会触发离屏绘制)。
  • 物理形态PhysicalModelPhysicalShapeDecoratedBoxRepaintBoundary(隔离重绘范围)。

滚动(Scrolling)

  • 基础滚动SingleChildScrollViewListViewGridViewPageViewScrollableScrollControllerScrollbar
  • 下拉刷新RefreshIndicator
  • Sliver 体系CustomScrollViewSliverListSliverGridSliverToBoxAdapterSliverAppBarSliverPersistentHeaderSliverFillRemainingSliverPadding

样式与响应式(Styling & Adaptive)

  • 主题ThemeThemeDataColorSchemeDefaultTextStyle
  • 自适应MediaQueryLayoutBuilderOrientationBuilderSafeAreaExpanded/Flexible 组合实现伸缩。

文本(Text)

  • 基础与富文本TextSelectableTextRichTextTextSpanWidgetSpan
  • 排版控制TextOverflowTextAlignTextHeightBehaviorDefaultTextStyle

进阶主题

导航与路由(Navigation & Routing)

  • Navigator 1.0Navigator.push/popMaterialPageRouteCupertinoPageRoutePageRouteBuilder(自定义转场)。
  • Navigator 2.0(Router API)RouterRouteInformationParserRouterDelegateBackButtonDispatcher(适用于 Web/桌面复杂路由)。
  • 对话框/底部弹层showDialogAlertDialogshowModalBottomSheetBottomSheetSnackBarPopupMenuButton

自适应与大屏(Adaptive & Large Screens)

  • 屏幕信息MediaQueryLayoutBuilderOrientationBuilder
  • 结构布局建议:大屏优先考虑 NavigationRail、分栏布局(如 Row + Expanded/Flexible)、SplitView(第三方)等。

常见页面骨架组合(实践向)

  • 应用骨架MaterialAppScaffoldAppBar/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;复杂/稀疏二维尽量使用 SliverGridGridView
    • 自适应断点优先 LayoutBuilder,再辅以 MediaQuery
  • 滚动性能
    • 长列表用 ListView.builder/GridView.builder,极长/异构列表使用 CustomScrollView+Sliver 家族。
    • 频繁重建/复杂绘制区域用 RepaintBoundary 隔离重绘。
  • 动画选型
    • 简单过渡优先隐式动画(Animated*);联动/复杂序列使用显式(AnimationController + AnimatedBuilder)。
  • 可达性
    • 重要区域添加 Semantics;交互元素补充 Tooltip、合理的 labelhint

相关视频

  • 每周 Widget(Widget of the Week):1 分钟快速讲解系列,覆盖大量核心与新组件。

参考与致谢

  • Flutter 官方文档 · 核心 Widget 目录:docs.flutter.cn/ui/widgets
  • 文档更新时间(官方页面标注):2025-09-02。引用中文内容请注明出处与链接。