如何在段落中加粗(或设置格式)一段文本?


104

我怎样才能使一行文本具有不同的格式?

例如:

你好世界

Answers:


220

您应该使用RichText小部件。

RichText小部件将包含TextSpan小部件,该小部件还可以具有子TextSpans的列表。

每个TextSpan小部件可以具有不同的TextStyle

这是要渲染的示例代码:Hello World

var text = new RichText(
  text: new TextSpan(
    // Note: Styles for TextSpans must be explicitly defined.
    // Child text spans will inherit styles from parent
    style: new TextStyle(
      fontSize: 14.0,
      color: Colors.black,
    ),
    children: <TextSpan>[
      new TextSpan(text: 'Hello'),
      new TextSpan(text: 'World', style: new TextStyle(fontWeight: FontWeight.bold)),
    ],
  ),
 );

27

[更新]

下面的答案最适合几个单词而不是一个段落,如果您的句子较长或需要格式化特定文本的段落,则最好使用@DvdWasibi建议的RichText

[老答案]

我喜欢保持代码简短简洁,这就是我要如何在行中添加两个文本字段,其中一个使用Normal字体,另一个使用粗体

注意:这对于较长的段落可能看起来不太好,对于标题等则看起来不错。

Row(children: <Widget>[
      Text("Hello"),
      Text("World", style: TextStyle(fontWeight: FontWeight.bold))
    ])
`

并且您应该获得期望的输出为“ Hello World


8
如果您要准备一段文字,这不是一个好主意。行中的每个Text()都会创建自己的垂直/水平空间。
穆罕默德·阿迪尔

那么使用Row的替代方法是什么?如果我想以不同的格式并排显示文本
maheshmnj,

3
看看上面@Dvdwasibi的答案,只需尝试使用大段的实现,您会发现并排的两个不同的段。您的答案是正确的,适用于2/3个单词,但不适用于段落。
穆罕默德·阿迪尔

1
同意,谢谢,我已经更新了我的答案。:)
maheshmnj

不客气.. :)
穆罕默德·阿迪尔

9
return RichText(
  text: TextSpan(
    text: 'Can you ',
    style: TextStyle(color: Colors.black),
    children: <TextSpan>[
      TextSpan(
        text: 'find the',
        style: TextStyle(
          color: Colors.green,
          decoration: TextDecoration.underline,
          decorationStyle: TextDecorationStyle.wavy,
        ),
        recognizer: _longPressRecognizer,
      ),
      TextSpan(text: 'secret?'),
    ],
  ),
);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.