Flutter组件记录

参考文章较老旧,可能有部分组件被弃用

部分组件未经使用过,无法确认描述正确性,仅供参考

信息展示

Tooltip

一个文本提示工具,帮助解释一个按钮或其他用户界面,当widget长时间按下时(当用户采取其他适当操作时)显示一个提示标签

LinearProgressIndicator & CircularProgressIndicator

线性进度条和环形进度条

RichText

富文本Text,可以显示多种样式的text

Stepper

一个Material Design 步骤指示器,显示一系列步骤的过程

iOS风格

CupertinoActivityIndicator

iOS风格的加载条,一个圆形的转圈菊花

CupertinoAlertDialog

CupertinoButton

CupertinoDialog

CupertinoDialogAction

通常用于CupertinoAlertDialog的按钮

CupertinoSlider

iOS风格的滑动条

CupertinoSwitch

iOS风格的开关,美观且常用

CupertinoPageTransition

提供iOS风格的页面过度动画

CupertinoNavigationBar

iOS风格的导航栏,通常和CupertinoPageScaffold一起使用

CupertinoTabBar

iOS风格的底部选项卡,通常和CupertinoTabScaffold一起使用

CupertinoPageScaffold

一个iOS风格的页面的基本布局结构,包含内容和导航栏

CupertinoTabScaffold

标签式iOS应用程序的结构,将选项卡栏放在内容选项卡之上

CupertinoTabView

支持选项卡间并行导航项卡的根内容,通常与CupertinoTabScaffolde一起使用

手势交互

LongPressDraggable

其子widget在长按时可拖动

DragTarget

一个拖动的目标widget,在完成拖动时它可以接收数据

Dismissible

可以在拖动时隐藏的widget

IgnorePointer

手势将会穿透被其包裹的组件,如将其包裹在弹窗外,则可以穿过弹窗点击到下一层

AbsorbPointer

可对children统一设置是否接收手势

容器

AspectRatio

指定子组件的宽高比

ConstrainedBox

对其子项施加附加约束,如:

1
2
3
4
return ConstrainedBox(
minWidth: 100,
child: Container(width: 50), // 宽度小于最大宽度则不生效,宽度仍为100
);

Baseline

根据子项的基线对它们的位置进行定位

Visibility

根据传入的布尔值决定是否显示子组件

FutureBuilder

基于与Future交互的最新快照来构建子组件

StreamBuilder

基于与流交互的最新快照构建自身的子组件

绘制和裁剪

ClipOval

将子组件裁剪为椭圆

ClipRect

将子组件裁剪为矩形

ClipPath

用path绘制形状裁剪其子组件

CustomPaint

提供一个画布,可在画布上绘制自定义图形

滚动布局

SingleChildScrollView

子组件超过父容器时可以滚动

Scrollbar

一个 Material Design 滚动条,表示当前滚动到了什么位置

RefreshIndicator

下拉刷新组件

Scrollable

实现了可滚动widget的交互模型,但不包含UI显示相关的逻辑

NestedScrollView

可嵌套其它滚动布局