美文网首页
Flutter开发 -- [03 - 文本Widget]

Flutter开发 -- [03 - 文本Widget]

作者: happy神悦 | 来源:发表于2020-11-10 17:11 被阅读0次

1. 文本Widget

在Android中,我们使用TextView,iOS中我们使用UILabel来显示文本;

Flutter中,我们使用Text组件控制文本如何展示;

1.1. 普通文本展示

在Flutter中,我们可以将文本的控制显示分成两类:

  • 控制文本布局的参数: 如文本对齐方式 textAlign、文本排版方向 textDirection,文本显示最大行数 maxLines、文本截断规则 overflow 等等,这些都是构造函数中的参数;
  • 控制文本样式的参数: 如字体名称 fontFamily、字体大小 fontSize、文本颜色 color、文本阴影 shadows 等等,这些参数被统一封装到了构造函数中的参数 style 中;

下面我们来看一下其中一些属性的使用:

class MyHomeBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text(
      "《定风波》 苏轼 \n莫听穿林打叶声,何妨吟啸且徐行。\n竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。",
      style: TextStyle(
        fontSize: 20,
        color: Colors.purple
      ),
    );
  }
}

展示效果如下:

我们可以通过一些属性来改变Text的布局:

  • textAlign:文本对齐方式,比如TextAlign.center
  • maxLines:最大显示行数,比如1
  • overflow:超出部分显示方式,比如TextOverflow.ellipsis
  • textScaleFactor:控制文本缩放,比如1.24

代码如下:

class MyHomeBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text(
      "《定风波》 苏轼 \n莫听穿林打叶声,何妨吟啸且徐行。\n竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。",
      textAlign: TextAlign.center, // 所有内容都居中对齐
      maxLines: 3, // 显然 "生。" 被删除了
      overflow: TextOverflow.ellipsis, // 超出部分显示...
//      textScaleFactor: 1.25,
      style: TextStyle(
        fontSize: 20,
        color: Colors.purple
      ),
    );
  }
}

1.2. 富文本展示

前面展示的文本,我们都应用了相同的样式,如果我们希望给他们不同的样式呢?

  • 比如《定风波》我希望字体更大一点,并且是黑色字体,并且有加粗效果;
  • 比如 苏轼 我希望是红色字体;

如果希望展示这种混合样式,那么我们可以利用分片来进行操作(在Android中,我们可以使用SpannableString,在iOS中,我们可以使用NSAttributedString完成,了解即可)

代码如下:

class MyHomeBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text.rich(
      TextSpan(
        children: [
          TextSpan(text: "《定风波》", style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold, color: Colors.black)),
          TextSpan(text: "苏轼", style: TextStyle(fontSize: 18, color: Colors.redAccent)),
          TextSpan(text: "\n莫听穿林打叶声,何妨吟啸且徐行。\n竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。")
        ],
      ),
      style: TextStyle(fontSize: 20, color: Colors.purple),
      textAlign: TextAlign.center,
    );
  }
}

相关文章

网友评论

      本文标题:Flutter开发 -- [03 - 文本Widget]

      本文链接:https://www.haomeiwen.com/subject/zspjbktx.html