likes
comments
collection
share

【Flutter基础】Flutter文字与图片

作者站长头像
站长
· 阅读数 35
  • Text组件
  • DefaultTextStyle组件(统一text样式)
  • RichText组件(行内包含不同样式时用)
  • Icon组件
  • IconTheme组件(统一icon样式)
  • Image图片组件
  • FadeInImage组件(图片加载是暂时替代显示的图片)

1. 文字

Text组件

Text组件,顾名思义,是一个最基础的显示文本的组件。下面主要代码感受一下比较常用的属性

【Flutter基础】Flutter文字与图片

body: Column(
        children: [
          Container(
            child: Text('hjfdhsk',textAlign:TextAlign.end),
          ),
          Container(
            child: Text("i am text i am texti am texti am texti am texti am texti am texti am texti am texti am texti am text",
            style: TextStyle(
              color: Colors.blueAccent, // 颜色
              fontSize: 30, // 字体大小
              fontWeight: FontWeight.w500, // 粗细
              fontStyle: FontStyle.italic, // 字体样式(加斜,正常)
              decoration: TextDecoration.underline, // 修饰(下划线 上划线 划掉)
              decorationStyle: TextDecorationStyle.dashed,// 修饰样式(实线 虚线 点线 波浪 双实线)
              letterSpacing: 10, // 字母与字母之间的间隔
              wordSpacing: 20, // 单词与单词之间的间隔
              shadows: [ // 阴影
                BoxShadow(
                  color: Colors.deepOrange,
                  offset: Offset(10, 20),// 位移
                  blurRadius: 8 // 模糊效果
                )
              ],
              background: Paint()..color = Colors.deepPurple,//还有很多,什么渐变啥的
            ),
            textAlign:TextAlign.center,
            // maxLines: 5, //定义多少行
            softWrap: true, // 换行
          ),
          )
        ],
      ),

DefaultTextStyle组件

多个Text组件需要统一风格时,与其单独设置这些Text组件的参数,还不如在Text组件的上级插入一个DefaultTextStyle组件,直接通过修改默认样式,统一多个下级Text组件。

与Text组件不同的是,DefaultTextStyle不支持直接传入文本内容(Text组件那个必传的位置参数),而是支持child参数,可供传入一个任意组件。Text组件的默认样式是由最临近的上级DefaultTextStyle组件所提供的。

若需要新的DefaultTextStyle组件继承上级已有的默认样式,则可以借助DefaultTextStyle.merge()构造函数进行合并操作,而不是重新开始。

【Flutter基础】Flutter文字与图片

RichText组件

RichText组件可用来显示一段包含不同样式的文本。一般Text组件已经可以满足大部分的需求。但是如果遇到 改变一段文字中的几个字,例如加粗强调某个词,某个词用下划线等效果,这时用RichText可以方便的在不同样式中切换

【Flutter基础】Flutter文字与图片

RichText和Text.rich() 两种写法, 倾向于选用Text.rich()构造函数继承Flutter框架已有的文本样式。因为TextStyle的默认文本颜色是白色,所以如果用到RichText组件一般都要手动设置文本颜色

2. 图标与图片

Icon组件

Icon是一个很常用的组件,用于快速地插入图标。图标的本质是一些相对特殊的字体,因此就像文字一样,属于矢量图形,可以支持无限缩放且不会失真。

Flutter框架中已经自带了一些图标,分别由Icons和CupertinoIcons两个类提供。前者包含常用的**Material设计风格(常见于安卓系统)的图标,后者含有Cupertino风格(常见于iOS系统)**的图标。

如果不确定需要什么图案,则往往可以在代码中先输入“Icons.”或“CupertinoIcons.”

【Flutter基础】Flutter文字与图片

IconTheme 组件

和DefaultTextStyle组件相似,当多个Icon组件需要统一风格时,直接在它们的父级中插入一个IconTheme组件,定义默认样式。

IconTheme只需传入一个IconThemeData类型的值,其中可以设置color(颜色)、size(尺寸)和opacity(不透明度)

【Flutter基础】Flutter文字与图片

Image组件

ImageProvider(必传)

类型详解运行时图片加载速度使用
NetworkImage(网络图片)直接提供某张图片资源的URL链接(若设备条件允许会自动缓存节约网络资源,提高下次加载速度)最慢Image.network()
FileImage(文件图片)文件图片一般用来加载存储设备(如磁盘、扩展卡等)的文件系统中的图片资源文件,如用户手机中的照片等Image.file()
AssetImage(资源包图片)资源包(AssetBundle)是指程序在编译时打包嵌入程序可执行文件中的其他文件,一般有图片资源或文字资源等。通常程序界面需要用到的图片文件都以资源包的方式读取,例如背景图片、公司徽标、按钮背景及其他的装饰图片等。Image.asset()
MemoryImage(内存图片)在Flutter框架中,dart:convert包里的base64Decode函数可以有效地将base64编码转换成Uint8List类型,并传给MemoryImage使用。最快Image.memory()

【Flutter基础】Flutter文字与图片

FadeInImage组件

若需要在图片加载的过程中暂时显示另一张替代图片,并在图片加载完毕后平滑过渡,就可以使用FadeInImage组件。

基本用法:默认有两个必填的属性,分别是placeholder(加载过程中临时显示的替代图)和image(最终显示的图片)

FadeInImage( placeholder: AssetImage("assets/loading.gif"), image:NetworkImage("https://example.com/owl.jpg"), )

或者像下面一样写assetNetwork函数(从资源包图片切换到网络图片)。还有一种是memoryNetwork函数(从内存图片切换到网络图片)

FadeInImage.assetNetwork( placeholder: "assets/loading.gif", image:"https://example.com/owl.jpg", )

【Flutter基础】Flutter文字与图片

转载自:https://juejin.cn/post/7248235392284426297
评论
请登录