【Flutter学习】基本组件之文本组件Text

一,概述  

  文本组件(Text)负责显示文本和定义显示样式,

二,继承关系

Object > Diagnosticable > DiagnosticableTree > Widget > StatelessWidget > Text

三,构造方法

  • 单一格式Text( ))

    • 构造方法创建,只能生成一种style

      • Text()

        const Text(this.data, {
            Key key,
            this.style,
            this.textAlign,
            this.textDirection,
            this.locale,
            this.softWrap,
            this.overflow,
            this.textScaleFactor,
            this.maxLines,
            this.semanticsLabel,
          }) : assert(data != null), textSpan = null, super(key: key);
  • 父文本格式(Text.rich( ) && new RichText( ) )
    • 静态方法创建,能够生成多种style。textSpan 则是可以得TextSpan,最大的用处在于处理多种类型和显示效果的文字,以及各自点击事件的处理。

      • Text.rich( )

        const Text.rich(this.textSpan, {
            Key key,
            this.style,
            this.textAlign,
            this.textDirection,
            this.locale,
            this.softWrap,
            this.overflow,
            this.textScaleFactor,
            this.maxLines,
            this.semanticsLabel,
          }): assert(textSpan != null), data = null, super(key: key);
      • new RichText( )

        const RichText({
            Key key,
            @required this.text,
            this.textAlign = TextAlign.start,
            this.textDirection,
            this.softWrap = true,
            this.overflow = TextOverflow.clip,
            this.textScaleFactor = 1.0,
            this.maxLines,
            this.locale,
          }) : assert(text != null) ,assert(textAlign != null), assert(softWrap != null), assert(overflow != null),
               assert(textScaleFactor != null), assert(maxLines == null || maxLines > 0), super(key: key);

四,参数讲解

  • String data : 必填参数,要显示的字符串
  • TextStyle style :可选参数, 文本样式

  • TextAlign textAlign  可选参数  文本水平对齐类型(枚举)

  • TextDirection textDirection  可选参数

    这个属性估计是给外国人习惯使用,
    
    相对TextAlign中的start、end而言有用(当start使用了ltr相当于end使用了rtl,也相当于TextAlign使用了left)
    
    对于从左到右的文本(TextDirection.ltr),文本从左向右流动;
    对于从右到左的文本(TextDirection.rtl),文本从右向左流动。
  • Locale locale 可选参数(此属性很少设置,用于选择区域特定字形的语言环境)
  • bool softWrap 可选参数  是否需要换行

    某一行中文本过长,是否需要换行。默认为true,如果为false,则文本中的字形将被定位为好像存在无限的水平空间。
  • TextOverflow overflow 可选参数  处理视觉溢出

    * TextOverflow.clip       剪切溢出的文本以修复其容器。

    * TextOverflow.ellipsis  使用省略号表示文本已溢出。

    * TextOverflow.fade     将溢出的文本淡化为透明。

  • double  textScaleFactor 可选参数  每个逻辑像素的字体像素数
    例如,如果文本比例因子为1.5,则文本将比指定的字体大小大50%。
    作为textScaleFactor赋予构造函数的值。如果为null,将使用从环境MediaQuery获取的MediaQueryData.textScaleFactor 即手机的像素密度(1.0、1.5、2.0、3.0)
  • int maxLines 可选参宿  文本要跨越的可选最大行数,

    为1,则文本不会换行。否则,文本将被包裹在框的边缘。

  • String semanticsLabel 图像的语义描述,用于向Andoid上的TalkBack和iOS上的VoiceOver提供图像描述

    talkback是一款由谷歌官方开发的系统软件,它的定位是帮助盲人或者视力有障碍的用户提供语言辅助

    Voiceover功能是APPLE公司在2009年4月新推出的一种语音辅助程序

五,示例demo  

import ‘package:flutter/material.dart‘;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: ‘Text文本组件‘,
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new CenterDemoPage() ,
    );
  }
}

class CenterDemoPage extends StatefulWidget{
   @override
   createState() => new CenterDemoPageState();
}

class CenterDemoPageState extends State<CenterDemoPage>{
   @override
   Widget build(BuildContext context) {
    return new Scaffold(
       appBar: new AppBar(
         title: new Text(‘Container Widget Demo‘),
       ),
       body:_buildDemo() ,
    );
  }

  Widget _buildDemo(){
    return new Center(
     child: new Text(
       ‘我是一段测试文本Hello World!我是一段测试文本 Hello World!我是一段测试文本 Hello World!我是一段测试文本 Hello World!我是一段测试文本 Hello World!‘,
      /**
       * 文字对齐方式,可选值有如下五个:
       *  TextAlign.center: 文本居中对齐
       *  TextAlign.left: 文本左对齐
       *  TextAlign.right: 文本右对齐
       *  TextAlign.start: 文本开始位置对齐,类似左对齐
       *  TextAlign.end: 文本结束位置对齐,类似右对齐
       *  TextAlign.justify: 文本两端对齐
       */
      textAlign: TextAlign.justify,
      /**
       * 文字方向,即文字从那边开始显示,该属性必须设置,可选值有如下两个:
       * TextDirection.ltr:left to right,文本从左边开始显示
       * TextDirection.rtl:right to left,文本从左边开始显示,textAlign 为 TextAlign.start 时再设置该值,相当于又把 textAlign 设置为 TextAlign.end。
       * textAlign 为 TextAlign.end 时再设置该值,相当于又把 textAlign 设置为 TextAlign.start
       */
      textDirection: TextDirection.ltr,
      /**
       * 文字最多显示行数,值为 int 型
       */
      maxLines: 3,
      /**
       * 当文本内容超过最大行数时,剩余内容的显示方式,相当于Android 的 ellipsize 属性,可选值有如下三个:
       * TextOverflow.clip:直接切断,剩下的文字就没有了
       * TextOverflow.ellipsis:ellipsis:在后边显示省略号
       * TextOverflow.fade: 溢出的部分会进行一个渐变消失的效果,softWrap 属性为 false 时才会有效果
       */
      overflow: TextOverflow.clip,
      /*
       * 是否自动换行,值为 boolean 型:
       * true:文本内容超过一行后可以换行显示,
       * 当没有设置 maxLines 属性且 overflow 为 TextOverflow.ellipsis 失效,显示单行且文本超出的部分显示为省略号。
       * false:文本内容超过一行后不可以换行显示,即只能单行显示,超出的部分默认切断处理,如果设置了 overflow 属性则按照 overflow 属性值处理。
       * 当设置了 maxLines 属性且 overflow 为 TextOverflow.ellipsis 失效,即可以换行,最大行数为 maxLines 属性的值。
       */
      softWrap:true ,
      /*
       * 文本字体缩放倍数,值为 double 型
       */
      textScaleFactor: 1.2,
      /**
       * 感觉是设置文本所属区域,可能跟字体有关,这个属性还没有看到效果。
       */
      locale: new Locale(‘‘),
      /**
       * 感觉是为该 Text 组件设置标签,这个属性还没有看到效果。
       */
      semanticsLabel: Locale.fromSubtags(‘1‘),
      /**
       * 文本样式
       */
      style: new TextStyle(
        //背景颜色,但是这样设置背景有些文本显示貌似会有点问题,值为一个 Paint 对象
              //background: backgroundPaint,
              //文字颜色,值为一个 Color 对象
              color: new Color(0xFF000000),
              /**
               * 添加装饰物,可选值有:
               * TextDecoration.none:无,默认
               * TextDecoration.overline:上划线
               * TextDecoration.lineThrough:删除线
               * TextDecoration.underline:下划线
               * 也可以调用 TextDecoration.combine() 方法传入一个集合设置多个装饰
               */
              decoration: TextDecoration.underline,
              //设置装饰物的颜色,值为一个 Color 对象
              decorationColor: new Color(0xFF00FFFF),
              /**
               * 设置装饰物的样式,可选值有:
               * TextDecorationStyle.dashed:装饰线为虚线
               * TextDecorationStyle.dotted :装饰线为点构成的线
               * TextDecorationStyle.double :装饰线为两根线
               * TextDecorationStyle.solid :装饰线为实心线
               * TextDecorationStyle.wavy :装饰线为波浪线
               * 也可以 TextDecorationStyle.values() 方法传入一个集合设置多种样式
               */
              decorationStyle: TextDecorationStyle.dashed,
              //自定义字体的名字,搭配 package 属性使用
              //fontFamily: ,
              //自定义字体的路径
              //package: ,
              //字体大小,值为 double 类型
              fontSize: 20.0,
              /*
               * 字体样式,可选值有:
               * FontStyle.italic:斜体
               * FontStyle.normal:正常
               */
              fontStyle: FontStyle.italic,
              //字体字重,常用值有 FontWeight.bold(加粗)
              fontWeight: FontWeight.bold,
              /**
               * 貌似文档中的意思是是否使用父类的样式来替换空值(没有设置的值)
               * 如果为 true 则使用父类的样式来替换控制
               * 如果为 false,则恢复成默认值,白色 10px,字体为 sans-serif
               */
              inherit: false,
              //字间距,值为 double 类型
              letterSpacing: 2.0,
              /**
               * 感觉是设置文字所属区域,可能跟字体有关
               * locale
               * 文字阴影,值为一个 Shadow 集合
               */
              shadows: shadowList,
              /**
               * 文本基线,这个不太理解,感觉用到的情况应该也不多,可选值有两个
               * TextBaseline.ideographic:用于对齐字母字符的字形底部的水平线
               * TextBaseline.alphabetic:用于对齐表意字符的水平线
               * 也可以 TextBaseline.values() 方法传入一个集合设置多个基线
               */
              textBaseline: TextBaseline.ideographic,
              //字体间距,值为 double 类型,应该是用空格隔开时就认为一个单词,英文容易理解,如 Hello World 就是两个单词,中文的词不用空格隔开,所以文本内容为中文时使用较少
              wordSpacing: 10.0,
              //行高,值为 double 类型,最终是该属性的值乘以 fontSize 作为行高,所以该值更像是一个行高系数
              height: 2.0),
      ),
     ),
    );
  }
}

六,官方文档

官网地址

原文地址:https://www.cnblogs.com/lxlx1798/p/11059598.html

时间: 2024-10-08 03:34:45

【Flutter学习】基本组件之文本组件Text的相关文章

ReactNative: 使用Text文本组件

一.简言 初学RN,一切皆新.Text组件主要用于显示文本,Text组件的重要性不言而喻,无论是Web开发还是客户端开发,都离不开它.它具有响应特性,也即表现为当它被触摸时是否显示为高亮状态.在Web开发中,字体样式的继承十分重要,在body上设置字体可以作用到全部的文本标签,而RN中字体样式只有在Text组件上才起作用.它支持多层嵌套,由此它存在样式继承,内部的Text组件可以继承外部Text组件的样式,也即父组件定义了相关样式,如果子组件没有重写样式的话,那么该子组件也会继承父组件定义的样式

JavaFX学习之道:文本Text及其特效

原文地址http://download.oracle.com/javafx/2.0/text/jfxpub-text.htm 文本讲述如何在JavaFX2.0应用中加入文本和如何为文本提供花俏的效果. 引子 JavaFX 2.0应用的图形内容包含一些对象,它们被组织在一个成为场景图的类树结构中.场景图中的每个元素成为一个结点,结点可以管理很多不同种类的内容,包括文本.结点可以转换和移动,也可以应用多种效果.为所有结点类型使用共同特点使得可以提供复杂的文本内容来满足现在的富网络应用(RIAs).

React.js学习之理解JSX和组件

在开启JSX的学习旅程前,我们先了解一下React的基本原理.React本质上是一个"状态机",它只关心两件事:更新DOM和响应事件,React不处理Ajax.路由和数据存储,也不规定数据组织的方式.它不是一个MVC的框架,只是MVC里的"V". 在每次状态改变时,使用JavaScript重新渲染整个页面会异常慢,这应该归咎于读取和更新DOM的性能问题.React使用虚拟DOM实现了一个非常强大的渲染系统,在React中对DOM只更新不读取.React以渲染函数为基

flex的Accordion组件头部文本居中显示

flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 1 <?xml version="1.0" encoding="utf-8"?> 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 3 xmlns:s="library://ns.adobe.com/flex/spar

Qt 学习之路:QML 组件

前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不过,本章我们只介绍一种方式:基于文件的组件.基于文件的组件将 QML 元素放置在一个单独的文件中,然后给这个文件一个名字.以后我们就可以通过这个名字来使用这个组件.例如,如果有一个文件名为 Button.qml,那么,我们就可以在 QML 中使用Button { … }这种形式. 下面我们通过一个例

【ExtJs】带日期组件的文本输入框、容器与Ext.Msg.alert告警框告警两次

ExtJs的UI组件主要模仿客户端的界面效果,甚至其编程方式都有类似之处. 一.基本目标 比如如下的组件,与VC6中的<[mfc]不同对话框之间互相操控.全局变量与日期控件>(点击打开链接)就有异曲同工之妙. 其基本的思想也是先设置两个日期组件与按钮组件,然后,在点击按钮,就触发事件. 二.制作过程 首先,这个网页全程运用ExtJs编程,因此基本的HTML布局,处理引入ExtJS资源之外什么都没有.甚至可以把下面的ExtJs脚本完全写在一个Js里面. <!DOCTYPE HTML PUB

Salesforce Lightning开发学习(二)Component组件开发实践

lightning的组件区分标准组件.自定义组件和AppExchange组件.标准组件由SF提供,自定义组件由developer自行开发,AppExchange组件由合作伙伴建立.下面我们写一个简单的列表demo来学习下自定义开发组件Component. 第一步:新建一个对象:电影,API:Movie__c,下表是其相关的字段   字段名 字段API 字段类型 描述 电影名称 Name 文本   主演 ToStar__c 文本(255)   主题曲 Theme__c 文本(255)   导演 D

DjangoRestFramework学习二之序列化组件、视图组件

目录 DjangoRestFramework学习二之序列化组件.视图组件 一 序列化组件 二 视图组件(Mixin混合类) DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] Courses--- POST --->添加数据 -----> 返回添加的数据{ } course

iOS富文本组件的实现—DTCoreText源码解析 数据篇

本文转载 http://blog.cnbang.net/tech/2630/ DTCoreText是个开源的iOS富文本组件,它可以解析HTML与CSS最终用CoreText绘制出来,通常用于在一些需要显示富文本的场景下代替低性能的UIWebView,来看看它是怎样解析和渲染HTML+CSS的,总体上分成两步: 数据解析—把HTML+CSS转换成NSAttributeString 渲染—用CoreText把NSAttributeString内容渲染出来,再加上图片等元素 本篇先介绍第一步,数据解