前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Flutter中的RichText组件,你了解多少?

关于Flutter中的RichText组件,你了解多少?

作者头像
徐建国
发布2022-06-24 14:13:06
7160
发布2022-06-24 14:13:06
举报
文章被收录于专栏:个人路线个人路线

作者:坚果 华为云享专家,InfoQ签约作者,OpenHarmony布道师,电子发烧友鸿蒙MVP,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。

今天给大家带来的是RichText组件,他里面有个text属性,RichText显示的文本内容是TextSpan类型,他不是一个简单的string,而是TextSpan类型,TextSpan类型是一个可以无限传递的树形结构,每个节点出了text属性,还可以通过style属性,设置自定义文字样式。甚至通过children属性,传入一个TextSpan列表作为子节点,已实现叠加和嵌套文字样式的功能。然后大家有没有疑问,关于红色的这个是如何设置的,这个我可以称呼它为碰撞检测,以便完成TextSpan树中某一片段的检测。recognizer: TapGestureRecognizer()这个属性就可以做到,当然,还有一个组件也有类似的功能,是什么呢?GestureDetector,大家可以对他也了解了解。

其实关于RichText组件还是有很多属性的,比如textScaleFactor 是放大系数,textAlign是文字对其方式,softWrap是否允许多行显示。

代码语言:javascript
复制
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,
    this.strutStyle,
    this.textWidthBasis = TextWidthBasis.parent,
    this.textHeightBehavior,

image-20220504083312661

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:flutter/gestures.dart';

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text("RichText Demo")),
        body: RichText(
          text: TextSpan(
            style: const TextStyle(color: Colors.blue, fontSize: 36),
            children: [
              const TextSpan(text: "我已阅读"),
              TextSpan(
                style: const TextStyle(
                  color: Colors.red,
                  decoration: TextDecoration.underline,
                ),
                text: "使用条款",
                recognizer: TapGestureRecognizer()
                  ..onTap = () => print("检测到用户点击使用条款"),
              ),
              const TextSpan(text: "和"),
              TextSpan(
                style: const TextStyle(
                  color: Colors.red,
                  decoration: TextDecoration.underline,
                ),
                text: "隐私政策",
                recognizer: TapGestureRecognizer()
                  // ignore: avoid_print
                  ..onTap = () => print("检测到用户点击隐私政策"),
              ),
              const TextSpan(text: "。"),
            ],
          ),
        ),
      ),
    ),
  );
}

好的,完整的源代码就在上面,大家可以自己运行,试一下具体的效果,总的来说体验还是蛮不错的,这个组件的应用场景主要就是可以用来显示一段包含不同样式的文本。希望大家通过本文,对他有一个基础的了解。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档