Flutter文本快速学习

Flutter 中的文本控件(Text Widget)用于在应用程序中显示单行或多行文本。下面是一些关于 Flutter 文本控件的详细介绍和示例代码。

文本样式

Flutter 的文本控件提供了很多可定制的文本样式选项,例如字体大小、颜色、字重、字体样式等等。下面是一些常用的样式属性:

  • style:一个 TextStyle 对象,用于设置文本的样式属性。
  • textAlign:枚举值,用于指定文本的对齐方式(left、right、center 等等)。
  • textDirection:一个 TextDirection 对象,用于指定文本的方向(ltr 或 rtl)。
  • softWrap:一个布尔值,用于指定文本是否自动换行。
  • overflow:一个 TextOverflow 枚举值,用于指定文本溢出时的处理方式(clip、fade、ellipsis 等等)。

下面是一个示例:

Text(
  'Hello World',
  style: TextStyle(
    fontSize: 24.0,
    color: Colors.blue,
    fontWeight: FontWeight.bold,
    fontStyle: FontStyle.italic,
    decoration: TextDecoration.underline,
    decorationColor: Colors.red,
    letterSpacing: 2.0,
  ),
  textAlign: TextAlign.center,
  textDirection: TextDirection.ltr,
  softWrap: true,
  overflow: TextOverflow.clip,
),

在这个示例中,我们创建了一个带有多种样式属性的文本控件。

文本跨度

Flutter 中的文本可以由多个不同样式的文本片段组成,每个片段称为一个“跨度”(Span)。使用 Flutter 的 TextSpan 类可以创建包含多个跨度的文本,每个跨度可以有不同的样式。下面是一个示例:

Text.rich(
  TextSpan(
    children: <InlineSpan>[
      TextSpan(
        text: 'Hello',
        style: TextStyle(fontWeight: FontWeight.bold),
      ),
      TextSpan(text: ', '),
      TextSpan(
        text: 'world',
        style: TextStyle(color: Colors.blue),
      ),
      TextSpan(text: '!'),
    ],
  ),
),

在这个示例中,我们创建了一个带有两个不同样式的文本片段的文本控件。

Demo 示例代码

下面是一个完整的 Flutter 示例应用程序,它演示了如何使用文本控件和样式属性来显示不同格式的文本:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Text Widget Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Text Widget Demo'),
        ),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Text(
              'Hello World',
              style: TextStyle(
                fontSize: 24.0,
                color: Colors.blue,
                fontWeight: FontWeight.bold,
                fontStyle: FontStyle.italic,
                decoration: TextDecoration.underline,
                decorationColor: Colors.red,
                letterSpacing: 2.0,
              ),
              textAlign: TextAlign.center,
              textDirection: TextDirection.ltr,
              softWrap: true,
              overflow: TextOverflow.clip,
            ),
            SizedBox(height: 16.0),
            Text.rich(
              TextSpan(
                children: <InlineSpan>[
                  TextSpan(
                    text: 'Hello',
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),
                  TextSpan(text: ', '),
                  TextSpan(
                    text: 'world',
                    style: TextStyle(color: Colors.blue),
                  ),
                  TextSpan(text: '!'),
                ],
              ),
              textAlign: TextAlign.center,
              textDirection: TextDirection.ltr,
              softWrap: true,
              overflow: TextOverflow.clip,
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个带有两个不同格式的文本控件,并使用 ColumnSizedBox 将它们分开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT编程学习栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值