前言
参考于 flutter常用组件整理 - 知乎 (zhihu.com) (指大部分抄袭)
MaterialApp
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| navigatorKey | GlobalKey<NavigatorState> | 导航键 |
| home | Widget | 应用打开时显示的页面 |
| routes | Map<String, WidgetBuilder> | 应用程序顶级路由表 |
| initialRoute | String | 初始路由 |
| onGenerateRoute | RouteFactory | 路由管理拦截器 |
| onGenerateInitialRoutes | InitialRouteListFactory | 生成初始化路由 |
| onUnknownRoute | onUnknownRoute | 当onGenerateRoute无法生成路由时调用 |
| title | String | 应用切换时显示的标题 |
| color | Color | 程序切换应用图标背景色(仅安卓) |
| theme | ThemeData | 主题颜色 |
| darkTheme | ThemeData | 暗黑模式主题颜色 |
| themeMode | ThemeMode | 哪种模式主题(默认跟随系统) |
| debugShowCheckedModeBanner | bool | 是否显示调试模式右上角debug |
| showSemanticsDebugger | bool | 显示组件占位大小 |
Scaffold
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| appBar | Widget | 顶部导航 |
| body | Widget | 主要内容 |
| floatingActionButton | Widget | 悬浮按钮 |
| floatingActionButtonLocation | FloatingActionButtonLocation | 悬浮按钮的位置 |
| floatingActionButtonAnimator | FloatingActionButtonAnimator | 悬浮按钮的动画 |
| persistentFooterButtons | List<Widget> | 页面底部的一组按钮 |
| drawer | Widget | 左侧抽屉菜单 |
| onDrawerChanged | DrawerCallback | 左侧抽屉菜单改变事件 |
| endDrawer | Widget | 右侧抽屉菜单 |
| onEndDrawerChanged | DrawerCallback | 右侧抽屉菜单改变事件 |
| bottomNavigationBar | Widget | 底部导航 |
| bottomSheet | Widget | body下方,底部控件上方,内容不会被键盘遮住 |
| backgroundColor | Color | 背景颜色 |
| resizeToAvoidBottomInset | bool | true可防止键盘遮挡 |
| drawerScrimColor | Color | 侧边栏弹出时非遮盖层主页面的颜色 |
| drawerEdgeDragWidth | double | 侧边栏弹出时非遮罩层的宽度 |
AppBar
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| leading | Widget | 左侧显示内容,如返回键 |
| leadingWidth | double | 默认56,左侧leading宽度 |
| automaticallyImplyLeading | bool | true情况下二级页面leading为空会默认显示返回键 |
| title | Widget | 导航栏标题 |
| centerTitle | bool | 标题是否居中 |
| actions | List | 导航栏右侧显示内容 |
| bottom | Widget | 导航栏底部的控件 |
| elevation | double | 导航栏下方阴影大小 |
| shadowColor | Color | 导航栏下方阴影颜色 |
| backgroundColor | Color | 导航栏的背景颜色 |
| foregroundColor | Color | 导航栏中文本和图标的颜色 |
| iconTheme | IconThemeData | 导航栏图标的颜色、透明度、大小 |
| actionsIconTheme | IconThemeData | 导航栏右侧图标的颜色、透明度、大小 |
| titleSpacing | double | title内容的间距,0将占用全部空间 |
TabBar
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| tabs | List | 两个或多个的Tab列表 |
| controller | TabController | 控制Tab的控制器 |
| isScrollable | bool | Tab栏是否可以水平滚动 |
| indicatorColor | Color | Tab指示器的颜色 |
| indicatorWeight | double | Tab指示器线条的粗细 |
| indicatorPadding | EdgeInsetsGeometry | 设置选中Tab指示器间距 |
| indicator | Decoration | Tab指示器的外观 |
| indicatorSize | TabBarIndicatorSize | Tab指示器的大小 |
| labelColor | Color | 选中Tab文字的颜色 |
| labelStyle | TextStyle | 选中Tab文字的样式 |
| labelPadding | EdgeInsetsGeometry | 选中Tab文字的间距 |
| unselectedLabelStyle | TextStyle | 未选中Tab文字的样式 |
| unselectedLabelColor | Color | 未选中Tab文字的颜色 |
| onTap | ValueChanged | Tab单击事件 |
Padding、AnimatedPadding
Padding增加组件间的间距,AnimatedPadding用于Padding需要改变大小并且增加动画效果
//paddingValue值改变会有动画效果
AnimatedPadding(
padding: EdgeInsets.all(paddingValue),
duration: Duration(milliseconds: 1000),
curve: Curves.easeInOut,
child: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height / 4,
color: Colors.blue,
),
onEnd: () {
print("动画结束");
},
),Align、AnimatedAlign
Align用来确定子控件在布局中的位置,如居中、左上等多个对齐方式。
ConstrainedBox、BoxConstraints
ConstrainedBox
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| constraints | BoxConstraints | 对子组件添加额外约束 |
BoxConstraints
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| minWidth | double | 最小宽度,默认0 |
| maxWidth | double | 最大宽度,默认double.infinity |
| minHeight | double | 最小高度,默认0 |
| maxHeight | double | 最大高度,默认double.infinity |
SizeBox、FittedBox
SizeBox
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| width | double | 宽度 |
| height | double | 高度 |
FittedBox当子组件的内容超出父组件大小时,FittedBox的作用是对子组件进行缩放和对齐方式的设置。
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| fit | BoxFit | 子组件缩放位置调整 |
| alignment | AlignmentGeometry | 组件对齐方式 |
| clipBehavior | Clip | 剪辑子组件内容的方式 |
OverflowBox、SizedOverflowBox
OverflowBox允许子组件超出父组件的边界
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| alignment | AlignmentGeometry | 子组件对齐方式 |
| minWidth | double | 最小宽度 |
| maxWidth | double | 最大宽度 |
| minHeight | double | 最小高度 |
| maxHeight | double | 最大高度 |
SizedOverflowBox也允许子组件超出父组件的边界,但是它与OverflowBox不同的在于还可以对子组件进行尺寸部分的限制。
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| size | Size | 尺寸大小限制 |
| alignment | AlignmentGeometry | 子组件对齐方式 |
| child | Widget | 子组件 |
AspectRatio、FractionallySizedBox
AspectRatio主要作用是调整子组件设定的宽高比,如播放视频时16:9或4:3等,aspectRatio纵横比例
AspectRatio(
aspectRatio: 16 / 9,
child: Container(
color: Colors.orangeAccent,
),
),FractionallySizedBox当我们需要一个控件的尺寸是相对尺寸时,比如当前按钮的宽度占父组件的70%
FractionallySizedBox(
alignment: Alignment.topLeft,
widthFactor: 1.5, //宽度为父组件的1.5倍
heightFactor: 0.5, //高度为父组件的0.5倍
child: new Container(
color: Colors.red,
),
),Container、AnimatedContainer
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| color | Color | 背景颜色 |
| child | Widget | 子组件 |
| width | double | 宽度 |
| height | double | 高度 |
| alignment | AlignmentGeometry | 子组件的对齐方式 |
| padding | EdgeInsetsGeometry | 内边距 |
| margin | EdgeInsetsGeometry | 外边距 |
| decoration | BoxDecoration | 背景装饰 |
| foregroundDecoration | BoxDecoration | 前景装饰 |
| constraints | BoxConstraints | 盒子的额外约束 |
| transform | Matrix4 | 组件旋转等变化 |
| transformAlignment | AlignmentGeometry | 组件变化的原点 |
AnimatedContainer是Container的动画版本,需要在改变宽高、颜色等需要增加动画效果时使用
ClipRect、ClipRRect
ClipRect给子组件裁剪为给定的矩形大小
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| clipper | CustomClipper | 自定义裁剪 |
| clipBehavior | Clip | 子组件边缘裁剪的方式,默认Clip.hardEdge |
| child | Widget | 子组件 |
ClipRRect使用圆角矩形剪辑子组件
| 属性 | 属性值类型 | 描述 |
|---|---|---|
| borderRadius | BorderRadius | 裁剪的边框圆角大小 |
| clipper | CustomClipper | 自定义裁剪器 |
| clipBehavior | Clip | 子组件边缘裁剪的方式,默认Clip.hardEdge |
| child | Widget | 子组件 |
ClipOval、ClipPath
ClipOval是裁剪子组件为椭圆的组件,属性同ClipRect
ClipPath是可以使用路径裁剪的组件,属性同ClipRect
Center
对子组件进行居中的时候使用








Comments | NOTHING