Flutter:如何从 api 格式化文本

问题描述 投票:0回答:1

我有来自 API 的文本,但我想在显示到屏幕之前将其格式化为粗体。

这是代码

return Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  mainAxisSize: MainAxisSize.min,
  children: [
    Text(
      state.listExplanation[index].description!, --> this is the text that I want to format
      style: body1(),
    ),

我调用的变量描述有这样的API文本:

"description" : "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."

不,在显示到屏幕之前,我只想将“Lorem Ipsum”和“1500s”设为粗体。我只知道如何完全更改文本,但要部分更改文本,这让我很困惑。

希望你能给我你的建议

flutter dart
1个回答
0
投票

如果文本来自

API
,您仍然可以使用相同的方法,将文本分成几部分,格式化您想要加粗的部分,然后将它们重新组合在一起。

试试这个例子:

String apiText = "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.";
List<String> parts = apiText.split(' ');

TextSpan textSpan = new TextSpan(
  children: parts.map((part) {
    if (part == 'Lorem' || part.endsWith('1500s')) {
      return new TextSpan(
        text: part + ' ',
        style: new TextStyle(fontWeight: FontWeight.bold),
      );
    } else {
      return new TextSpan(
        text: part + ' ',
      );
    }
  }).toList(),
);

return new RichText(text: textSpan);

我们使用

split()
方法将文本拆分为多个部分,然后循环遍历每个部分以确定是否应将其格式化为粗体。如果零件符合条件,我们将创建一个
TextSpan
,并将
fontWeight
属性设置为
bold
。如果部分不匹配,我们创建一个没有任何特殊格式的
TextSpan
。最后,我们使用
TextSpan
小部件将所有
RichText
的背面组合在一起。

© www.soinside.com 2019 - 2024. All rights reserved.