Flutter组件

本文详细介绍Flutter中的关键UI组件,包括Text、Container、Image等的基本用法及参数设置,同时还介绍了列表、网格视图、布局控件及自定义组件的创建方法。

Flutter Text组件

名称功能
textAlign文本对齐方式( center 居中;left 左对齐;right 右对齐;justify 两端对齐 )
textdirection文本方向(ltr 从左至右;rtl 从右至左)
overflow文字超出屏幕之后的处理方式(clip裁剪,fade渐隐,ellipsis省略号)
textScaleFactory字体显示倍率
maxLines文字显示最大行数
style字体的样式设置

TextStyle参数

名称功能
decoration文字装饰线(non 没有线;lineThroug 删除线;overline 上划线;underline 下划线)
decorationColor文字装饰线颜色
decorationStyle文字装线风格([dashed,dotted]虚线,double 两根线,solid 一根实线,wavy 波浪线)
wordSpacing单词间隔(如果是负值,会让单词变得更紧凑)
letterSpacing字母间隔(如果是负值,会让字母变得更紧凑)
fontStyle文字样式(italic 斜体,normal 正常体)
fontSize文字大小
color文字颜色
fontWeight字体粗细(bold 粗体,normal 正常体)

Flutter Container组件

名称功能
alignmenttopCenter: 顶部居中对齐; topLeft:顶部左对齐;topRight:顶部右对齐;center:水平垂直居中对齐;centerLeft:垂直居中水平居左对齐;centerRight:垂直居中水平居右对齐;bottomCenter:底部居中对齐;bottomLeft:底部居左对齐;bottomRight:底部居右对齐
decorationdecoration: BoxDecoration(color:Colors.blue,border:Border.all(color:Colors.red,width:2.0),borderRadius:(BorderRadius.all(Radius.circular(8.0))))
marginmargin属性表示Container与外部其他组件的距离。EdgeInsets.all(20.0)
paddingpadding就是Container的内边距,指Container边缘与Child之间的距离,padding:EdgeInsets.all(10.0)
transform让Container容易进行一些旋转之类的。transform:Matrix4.rotationZ(0.2)
height容器高度

Flutter 图片组件

名称说明
Image.asset本地图片
Image.network远程图片

Image组件的常用属性

名称类型说明
alignmentAlignment图片的对齐方式
color和colorBlendmode设置图片的背景颜色,通常和colorBlenderMode配合一起使用,这样可以使图片颜色和背景颜色混合
fitBoxFitfit属性用来控制图片的拉伸和挤压,这都是根据父容器来的。BoxFit.fill:全图显示,图片会被拉伸,并充满父容器。BoxFit.contain:全图显示,显示原比例,可能会有空隙。BoxFit.cover:显示可能拉伸,可能裁切,充满(图片要充满整个容器,还不变形);BoxFit.fitWidth:宽度充满(横向充满),显示可能拉伸,可能裁切。BoxFit.fitHeight:高度充满(竖向充满),显示可能拉伸,可能裁切。BoxFit.scaleDown:效果和contain差不多,但是此属性不允许显示超过原图片大小,可小不可大
repeat平铺ImageRepeat.repeat:横向和纵向都进行重复,知道铺满整个画布。ImageRepeat.repeatX:横向重复,纵向不重复。ImageRepeat.repeatY:纵向重复,横向不重复
width宽度 一般结合ClipOval才能看到效果
height高度 一般结合ClipOval才能看到效果

Flutter列表参数

名称类型说明
scrollDirectionAxisAxis.horizontal 水平列表;Axis.vertical 垂直列表
paddingEdgeInsetsGeometry内边距
resolvebool组件反向排序
childrenList< Widget >列表元素

Flutter GridView组件的常用参数

名称功能
GridView.cout实现网格布局
GridView.builder实现网格布局

常用属性

名称类型说明
scrollDirectionAxis滚动方法
paddingEdgeInsetsGeometry内边距
resolvebool组件反向排序
crossAxisSpacingdouble水平子Widget之间间距
mainAxisSpacingdouble垂直子Widget之间间距
crossAxisCountint一行的Widget数量
childAspectRatrodouble子Widget宽高比例
children< Widget>[]
gridDelegateSliverGridDelegateWithFixedCrossAxisCount(常用);SliverGridDelegateWithMaxCrossAxisExtent控制布局主要用在GridView.builder里面

Flutter Padding组件

属性说明
paddingpadding值,EdgeInsetss设置充值的值
child子组件

Flutter Row水平布局控件

属性说明
mainAxisAlignment主轴的排序方式
crossAxisAlignment次轴的排序方式
children组件子元素

Flutter Column垂直布局组件

属性说明
mainAxisAlignment主轴的排序方式
crossAxisAlignment次轴的排序方式
children组件子元素

Flutter Expanded类似Web中的Flex布局

属性说明
flex元素占整个父Row/Column的比例
child子元素

Flutter Stack层叠组件

属性说明
alignment配置所有子元素的显示位置
children子元素

Flutter Stack Align实现定位布局

Stack组件中结合Align组件可以控制每个子元素的显示位置

属性说明
alignment配置所有子元素的显示位置
children子元素

Flutter Stack Positioned实现定位布局

Stack组件中结合Positioned组件也可以控制每个子元素的显示位置

属性说明
top子元素距离顶部的距离
bottom子元素距离底部的距离
left子元素距离左侧的距离
right子元素距离右侧的距离
child子组件

Flutter AspectRatio组件

AspectRatio的作用是根据设置调整子元素child的宽高比

属性说明
aspectRatio宽高比,最终可能不会根据这个值去布局,具体则要看综合因素,外层是否允许按照这种比率进行布局,只是一个参考

Flutter Card组件

Card是卡片组件块,内容可以由大多数类型的Widget构成,Card具有圆角和阴影,这让它看起来有立体感

属性说明
margin外边距
child子组件
ShapeCard的阴影效果,默认的阴影效果为圆角的长方形边

Wrap组件

Wrap可以实现流布局,单行的Wrap和Row表现几乎一致,单列的Wrap则跟Row表现几乎一致。但Row和Column都是单行单列的,Wrap突破了这个限制,mainAxis上空间不足时,则向crossAxis上去扩展显示

属性说明
direction主轴的方向,默认水平
alignment主轴的对齐方式
spacing主轴方向上的间距
textDirection文本方向
verticalDirection定义了children摆放顺序,默认是down,见Flex相关属性介绍
runAlignmentrun的对齐方式。run可以理解为新的行或者列,如果是水平方向布局的话,run可以理解为新的一行
runSpacingrun的间距

Flutter中自定义有状态组件

在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/StatefulWidget。

名称说明
StatelessWidget无状态组件,状态不可变的widget
StatefulWidget有状态组件,持有的状态可能在widget生命周期改变

Flutter BottomNavigationBar组件

BottomNavigationBar是底部导航条,可以让我们定义底部Tab切换,bottomNavigationBar是Scaffold组件的参数

BottomNavigationBar常见属性

属性说明
itemsList< BottomNavigationBarItem>底部导航条按钮集合
iconSizeicon
currentIndex默认选中第几个
onTap选中变化回调函数
fixedColor选中的颜色
typeBottomVavigationBarType.fixed;BotomNavigationBarType.shifting

Flutter中的路由

Flutter中的路由就是页面跳转。在Flutter中通过Navigator组件管理路由导航。并提供了管理堆栈的方法,如:Navigator.push和Navigator.pop

Flutter提供了两种路由配置的方式:1.基本路由 2.命名路由

Flutter AppBar自定义顶部按钮图标、颜色

属性说明
leading在标题前面显示的一个控件,在首页通常显示应用的logo,在其他页面通常显示为返回按钮
title标题,通常显示为当前界面的标题文字,可以放组件
actions通常使用IconButton来表示,可以放按钮组件
backgroundColor导航背景颜色
iconTheme图标样式
textTheme文字样式
centerTitle标题是否居中显示

Flutter AppBar中自定义TabBar实现顶部Tab切换

TabBar常见属性

属性说明
tabs显示的标签内容,一般使用Tab对象,也可以是其他的Widget
controllerTabController对象
isScollable是否可滚动
indicatorColor指示器颜色
indicatorWeight指示器高度
indicatorPadding底部指示器的Padding
indicator指示器decoration,例如边框等
indicatorSize指示器大小计算方式,TabBarIndicatorSize.label跟文字等宽,TabBarIndicatorSize.tab跟每个tab等宽
labelColor选中label颜色
labelStyle选中label的Style
labelPadding每个label的padding值
unselectedLabelColor未选中label颜色
unselectedLabelStyle未选中label的Style

Flutter DrawerHeader常见属性

属性说明
decoration设置顶部背景颜色
child配置子元素
padding内边距
margin外边距

Flutter UserAccountsDrawerHeader常见属性

属性说明
decoration设置顶部背景颜色
accountName账户名称
accountEmail账户邮箱
currentAccountPicture用户头像
otherAccountspictures用来设置当前账户其他账户头像
margin
### Flutter 组件概述 Flutter 提供了一套丰富的组件库,这些组件可以帮助开发者快速构建用户界面。每个组件都代表屏幕上的一个部分,并可以嵌套其他组件形成复杂而灵活的UI结构[^2]。 #### 主要分类 - **基础组件**:如 `Text`、`Image` 等用于显示文字和图片的基础控件。 - **布局组件**:像 `Row`、`Column` 这样的容器类组件用来安排子部件的位置关系;还有 `Stack` 可以让多个孩子重叠放置。 - **表单输入组件**:例如 `TextField` 使应用程序能接收用户的文本输入。 - **交互式组件**:按钮 (`ElevatedButton`) 或者开关 (`Switch`) 让用户可以通过触摸操作改变状态或触发事件处理程序。 #### 创建自定义组件的方法 通过继承 StatelessWidget 或 StatefulWidget 类来自定义新的 UI 构建单元。无状态的小部件只负责展示数据而不涉及任何业务逻辑变化;有状态的大部件则允许内部维护一些可变的信息,在特定条件下更新视图。 ```dart // 定义一个简单的无状态Widget class MyStatelessWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Container( child: Text('这是一个无状态组件'), ); } } // 实现带有状态管理功能的状态fulWidget class Counter extends StatefulWidget { @override _CounterState createState() => _CounterState(); } class _CounterState extends State<Counter> { int count = 0; void incrementCount(){ setState(() {count++;}); } @override Widget build(BuildContext context){ return Column( children:[ ElevatedButton(onPressed:incrementCount ,child:Text('+')), Text('$count') ] ); } } ``` 上述代码展示了如何创建两种不同类型的组件——静态内容呈现器以及动态行为控制器。前者仅需提供固定的视觉表现形式即可满足需求;后者除了外观外还需要具备响应外部动作的能力并适时调整自身的属性值。 #### 如何使用官方提供的Material Design风格预置组件? 为了简化开发流程,Flutter 内置了许多遵循 Material Design 设计指南的标准组件。只需导入相应的包就可以直接调用它们: ```yaml dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 # 如果想要支持 iOS 风格也可以加入此依赖项 ``` 接着可以在Dart文件里引入material.dart: ```dart import 'package:flutter/material.dart'; ``` 之后便可以直接利用诸如 `AppBar`, `Drawer`, `BottomNavigationBar` 等高级别的组合型构件来加速项目的搭建过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值