flutter开发实战-RichText富文本居中对齐

flutter开发实战-RichText富文本居中对齐

在开发过程中,经常会使用到RichText,当使用RichText时候,不同文本字体大小默认没有居中对齐。这里记录一下设置过程。

一、使用RichText

我这里使用RichText设置不同字体大小的文本

Container(
            decoration: BoxDecoration(
              color: Colors.amber,
            ),
            alignment: Alignment.center,
            child: RichText(
              textAlign: TextAlign.center,
              text: TextSpan(children: [
                TextSpan(
                    text: 'Hello\s',
                    style: TextStyle(
                      fontSize: 30,
                    )),
                TextSpan(
                  text: 'Flutter',
                  style: TextStyle(fontSize: 50),
                ),
                TextSpan(
                    text: 'let\s go',
                    style: TextStyle(
                      fontSize: 30,
                    )),
              ]),
            ),
          ),
    

在设置后发现文本没有在竖直方向没有居中对齐。
下面需要使用到WidgetSpan

WidgetSpan是官方提供用于针对图文混排的非常便捷的实现方式。WidgetSpan可以接入任何你需要的Widget。

在WidgetSpan支持在文本中插入指定的Widget,可以提升富文本自定义效果。

Text.rich(TextSpan(
      children: <InlineSpan>[
        TextSpan(text: 'Hello World!'),
        WidgetSpan(
            child: SizedBox(
          width: 100,
          height: 50,
          child: Card(
              color: Colors.red,
              child: Center(child: Text('flutter'))),
        )),
       
        TextSpan(text: '加油!'),
      ],
    )
    

二、RichText富文本居中对齐

RichText富文本居中对齐,我们可以将文本进行使用WidgetSpan进行嵌套。

WidgetSpan buildCenteredTextSpan({required String text, required TextStyle style}) {
    return WidgetSpan(
      alignment: PlaceholderAlignment.middle,
      child: Text(text, style: style),
    );
  }
    

调整之后的代码如下

Container(
            decoration: BoxDecoration(
              color: Colors.amber,
            ),
            alignment: Alignment.center,
            child: RichText(
              textAlign: TextAlign.center,
              text: TextSpan(children: [
                buildCenteredTextSpan(text: 'Hello\s', style: TextStyle(
                fontSize: 30,
              )),
                buildCenteredTextSpan(text: 'Flutter', style: TextStyle(
                  fontSize: 50,
                )),
                buildCenteredTextSpan(text: ' let\s go', style: TextStyle(
                  fontSize: 30,
                )),
                
              ]),
            ),
          ),
    

效果图如下
在这里插入图片描述

三、小结

flutter开发实战-RichText富文本居中对齐

学习记录,每天不停进步。

相关推荐

  1. Qt——自定义文本RichText

    2024-06-14 18:40:01       33 阅读
  2. flutter 文本思考

    2024-06-14 18:40:01       56 阅读
  3. React文本编辑器开发(十)变换

    2024-06-14 18:40:01       41 阅读
  4. ppt图片居中对齐

    2024-06-14 18:40:01       27 阅读
  5. vue3+wangeditor实现文本

    2024-06-14 18:40:01       42 阅读
  6. vue + TinyMCE实现文本编辑器

    2024-06-14 18:40:01       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 18:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 18:40:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 18:40:01       82 阅读
  4. Python语言-面向对象

    2024-06-14 18:40:01       91 阅读

热门阅读

  1. TikTok账号被限流的原因及解决方法

    2024-06-14 18:40:01       32 阅读
  2. 【Tools】理解图像与像素矩阵

    2024-06-14 18:40:01       29 阅读
  3. 军用FPGA软件 Verilog语言的编码准测之复位

    2024-06-14 18:40:01       28 阅读
  4. Android找不到so,实际上apk中有的

    2024-06-14 18:40:01       26 阅读
  5. windows设备/路由设备上ip地址如何查看、使用

    2024-06-14 18:40:01       32 阅读
  6. 常见的spark mllib分类算法详解

    2024-06-14 18:40:01       32 阅读