Flutter - 如何使用某种构建器在同一段落中显示具有不同样式的字符串数组?

Flutter - How to display an array of strings in the same paragraph with varying styling using a builder of some sort?

如果您能提供任何帮助,我们将不胜感激。我想不通。

我将处理 JSON 包含各种字符串数组的数据文件,我们希望所有这些文件都显示在同一个段落中。将需要以编程方式遍历数组以动态创建显示的小部件。

该段落将包含要显示为普通文本、粗体和斜体的字词。 (我们可以在结构的第二个参数中提供类型,稍后会详细介绍。)

我可以在 Flutter 中手动执行此操作,如下所示:

这是创建这个的代码片段: (我在这里伪装了一个数据数组……真正的数据将在运行时读入。)

List data = [
    "For example, ",
    "this(1)",
    " is bold. And ",
    "this(2)",
    " is italic. And, finally ",
    "this(3)",
    " is bold and italic."
];
                          
 return Text.rich(
             TextSpan(
                  text: '',
                  children: 
                      <InlineSpan>[
                         TextSpan(
                              text: data[0],
                           ),
                         TextSpan(
                              text: data[1],
                              style: TextStyle(fontWeight: FontWeight.bold,),
                        ),
                                TextSpan(
                                  text: data[2],
                                ),
                                TextSpan(
                                  text: data[3],
                                  style: TextStyle(fontStyle: FontStyle.italic),
                                ),
                                TextSpan(text: data[4]),

                                TextSpan(
                                    text: data[5],
                                    style: TextStyle(
                                        fontWeight: FontWeight.bold,
                                        fontStyle: FontStyle.italic)),

                                TextSpan(text: data[6]),
                      ],
                    ),
          );


但是,我需要在运行时以编程方式创建小部件(使用某种生成器函数或其他东西)。

曾尝试使用 RichText 和 Tech.rich,但无济于事。此外,找不到有关 ParagraphBuilder 的任何有用示例(找到了 class 描述,但帮助不够)。

有谁知道如何在 Flutter 的单个段落中做这样的事情,来自 array/List/Map)

非常感谢,提前?

下面显示了一个数据数组示例和手动工作的代码(撇开如何准确提供样式类型的问题......我可以在弄清楚如何在中显示字符串后进行探索)数组中的相同段落)。

要在列表中生成小部件,您可以使用简单的 for 循环:

<InlineSpan>[
  for(var string in data)
    TextSpan(text: string),
]

感谢@MickaelHrndz 和@psink

@MickaelHmdz - 效果很好!!!非常感谢!

这是第一部分的相关代码——将字符串的 array/List 放入同一段落:

var list = [
      "one asdfads",
      "two fasdf aeer",
      "three asdf 23v ar uppo  ",
      "four aspl ojv mepfif hepv,"
    ];      

...

body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: RichText(
          text: TextSpan(children: <InlineSpan>[
            for (var string in list)
              TextSpan(text: string, style: TextStyle(color: Colors.black)),
          ]),
        ),
      ),

这里是 phone 上的结果截图:

更新:使用三元运算符处理 .

中的样式

完美,有样式!!!!谢谢大家!

更新结果如下: