Flutter 常用组件

264 阅读5分钟

常用组件

Container() 容器组件

类似于前端的div容器,自身具备width、height、color等诸多属性,其常用属性如下:

属性名类型说明
keyKeycontainer容器的唯一标识符
alignmentAlignmentGeometry控制child的对齐方式,属性详见:alignment
paddingEdgelnsetsGeometry内边距,属性详见:padding
colorColor用来设置container的背景色,不能和decoration属性同时存在
decorationDecoration设置盒子模型的样式
widthDoublecontainer容器的宽度
heightDoublecontainer容器的高度
marginEdgelnsetsGeometry外边距,属性详见:margin
childWidgetcontainer中的内容部分
class CustomMoudle extends StatelessWidget {  @override  Widget build(BuildContext context) {    return Container(      width: 200.0, // container容器宽度      height: 200.0, // container容器高度      color: Colors.redAccent, // 设置背景色      alignment: Alignment.center, // child元素内容居中显示      child: Text("主体内容"), // container容器内容    );  }}

key 唯一标识符

相当于前端div容器的ID属性,具有唯一性,事件的执行添加都是依据这个唯一标识符进行的

aliganment 对齐方式

设置child子元素在container中的对齐方式,常用属性值如下:

属性值说明
Alignment.bottomCenter底部居中显示
Alignment.bottomLeft底部靠左边显示
Alignment.bottomRight底部靠右边显示
Alignment.center水平、垂直方向居中显示
Alignment.centerLeft垂直方向居中,水平方向靠左显示
Alignment.centerRight垂直方向居中,水平方向靠右显示
Alignment.topCenter顶部居中显示
Alignment.topLeft顶部靠左显示
Alignment.topRight顶部靠右显示
Alignment.lerp(a, b, t)a:第一个点位置,b:第二个点位置,t:偏移值 偏移值就是指ab两个点确定的直线上偏移,0就是a点,1就是b点,0.5就是ab中点
alignment: Alignment.center, 

padding 内边距

内边距,常用属性值如下:

属性值说明
EdgeInsets.fromLTRB(left, top, right, bottom)单独设置左,上,右,下四边的间距
EdgeInsets.all(value)一起设置左,上,右,下四边的间距
padding: EdgeInsets.fromLTRB(left, top, right, bottom),

color 背景色

在前端中,color一般是用来设置字体颜色的,但是在这里color设置的是container容器背景色,常用属性值如下:

属性值说明
Colors.redAccent系统自定义的颜色,红色
Color(0xFFFFFFBA)16进制的颜色取值
color: Colors.redAccent, // 系统自带color: Color(0xFFFFFFBA), // 16进制颜色

如果你想设置渐变色,建议使用decoration属性设置

decoration 样式

container容器的样式集合属性,基本所有样式都可以在这个里面定义,常用属性如下:

属性值说明
color: Colors.red设置背景色
border: Border.all()设置边框
borderRadius: BorderRadius.all(const Radius.circular(8.0))设置边框倒角
boxShadow: []设置阴影
gradient:LinearGradient()设置渐变色背景
image: DecorationImage()设置背景图
decoration: BoxDecoration(    color: Colors.red, // 设置背景色    border: Border.all(        color: Colors.yellow, // 边框颜色        width: 3.0 // 边框宽度    ),    borderRadius: BorderRadius.all(const Radius.circular(8.0)), // 边框倒角    image: DecorationImage(image: NetworkImage(_imageUrl), fit: BoxFit.fill), // 设置背景图    boxShadow: [        BoxShadow(            color: Color(0xffff0000), // 阴影颜色            blurRadius: 5.0, // 阴影扩散范围        )    ],    gradient: LinearGradient(        begin: Alignment.topLeft, // 渐变色开始位置        end: Alignment(0.2, 0.0), // 渐变色结束位置        colors: [            const Color(0xFFFFFFEE), // 渐变色:色值一            const Color(0xFF999999) // 渐变色:色值二        ],     ),),

Text() 文本组件

Text组件是用于展示文本的组件,是最基本的组件之一。常用属性如下:

属性类型说明
dataString展示的文本内容(必填属性)
styleTextStyle文本样式,包含字体大小、字体颜色、字体粗细等等
textAlignTextAlign文本对齐方式,包括左对齐,右对齐,居中等等(相对于父元素)
textDirectionTextDirection文本阅读方向,包括从左到右,从右到左
softWrapbool是否换行
overflowTextOverflow溢出隐藏
maxLinesint最大显示行数
Text(    "Hello", // 展示的文本内容,必填属性    textAlign: TextAlign.center, // 字体居中, 这个属性需要注意的是父元素必须是大于这个Text()组件的,否则是不生效的    textDirection: TextDirection.rtl, // 字体阅读方向,这里设置的是从右往左阅读    softWrap: false, // false:不换行    overflow: TextOverflow.ellipsis, // 溢出显示"..."    maxLines: 2, // 最大显示行数    style: TextStyle( // 文本样式        color: Colors.white,  // 字体颜色        fontSize: 20.0, // 字体大小        fontWeight: FontWeight.bold // 字体粗细    ),)

data 文本内容

用于设置Text()组件所需要展示的文本信息,该属性是必填属性,否则会报错。参数的数据类型是"String"类型

Text("Hello")

style 字体样式

类似于前端的"style"属性,用于设置字体大小,粗细,颜色等等,搭配"TextStyle()"控件一起使用

属性值说明
color字体颜色,示例:"color: Colors.white"
fontSize字体大小,示例:"fontSize: 20.0"
fontWeight字体粗细,示例:"fontWeight: FontWeight.bold"
fontFamily字体,示例:"fontFamily: 'ui-serif'"
letterSpacing字体间距,示例:"letterSpacing: 2.0"
wordSpacing单词间距,针对英文起效,示例:"wordSpacing: 4.0"
textBaseline基线,示例:"TextBaseline.alphabetic"
fontFeatures前景
background背景
shadows阴影
decoration划线,包含中划线,下划线以及上划线,示例:"TextDecoration.underline"
Text("Hello",     style:TextStyle(         color: Colors.white,         fontSize: 20.0     ))

textAlign 文本对齐方式

用于设置文本的对齐方式,类似于前端的"text-align"属性,用法也是一致的,参数的数据类型是"TextStyle"类型

注意:父元素空间大于Text空间的时候textAlign文本对齐方式才会产生效果

属性值说明
TextAlign.center居中显示
TextAlign.left靠左显示
TextAlign.start靠左显示,也可以说是靠阅读方式开始的地方显示
TextAlign.right靠右显示
TextAlign.end靠右显示,也可以说是靠阅读方式结束的地方显示
Text(    "Hello",    textAlign: TextAlign.center,)

textDirection 文本阅读方向

正常来说,一般文字的阅读基本都是从左到右阅读的,但是也有些国家是从右往左阅读的。所以才会提供这个属性,一般用在国际化app中,参数类型是"TextDirection"类型

注意:该属性会影响TextAlign.startTextAlign.end的显示方向

属性值说明
TextDirection.ltr从左往右阅读
TextDirection.rtl从右往左阅读
Text(    "Hello",    textDirection: TextDirection.ltr,)

softWrap 换行

用于控制当前Text组件内文本是否会换行,参数是"bool(布尔)"类型

属性值说明
true会换行
false不会换行
Text(    "Hello",    softWrap: false,)

overflow 文本溢出

用于设置文本溢出时的处理方式,一般是用来做文本溢出显示"..."这种需求的,参数是"TextOverflow"类型

属性值说明
TextOverflow.clip溢出内容直接截断隐藏
TextOverflow.ellipsis溢出内容显示"..."
TextOverflow.fade溢出内容隐藏并且有一个透明过渡的效果
TextOverflow.visible超过整个屏幕的溢出内容才会隐藏,不是根据父元素盒子大小来控制的
Text(    "Hello",    overflow: TextOverflow.ellipsis,)

maxLines 行数

用于控制文本在允许换行时,最大显示的行数,超过的都会被隐藏

Text(    "Hello",    maxLines: 2, // 这里是设置文本最大显示2行)