Flutter 颤振-如何使用某种生成器以不同的样式在同一段落中显示字符串数组?

Flutter 颤振-如何使用某种生成器以不同的样式在同一段落中显示字符串数组?,flutter,dart,builder,paragraph,Flutter,Dart,Builder,Paragraph,你能提供的任何帮助都将不胜感激。我想不出来 我将处理包含不同字符串数组的JSON数据文件,我们希望所有这些字符串都显示在同一个段落中。将需要以编程方式迭代数组以动态创建显示的小部件 该段落将包括将显示为普通文本、粗体和斜体的单词。(我们可以在结构的第二个参数中提供类型,但稍后将详细介绍。) 我可以在颤振中手动执行此操作,如下所示: 这是创建以下内容的代码片段: (我在这里创建了一个数据数组……真正的数组将在运行时读取。) 列表数据=[ “例如,”, “本(1)”, “是大胆的,而且”, “本(

你能提供的任何帮助都将不胜感激。我想不出来

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

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

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

这是创建以下内容的代码片段: (我在这里创建了一个数据数组……真正的数组将在运行时读取。)

列表数据=[
“例如,”,
“本(1)”,
“是大胆的,而且”,
“本(2)”,
“是斜体。最后”,
“本(3)”,
“是粗体和斜体。”
];
返回Text.rich(
TextSpan(
文本:“”,
儿童:
[
TextSpan(
文本:数据[0],
),
TextSpan(
正文:数据[1],
样式:TextStyle(fontWeight:fontWeight.bold,),
),
TextSpan(
正文:数据[2],
),
TextSpan(
正文:数据[3],
样式:TextStyle(fontStyle:fontStyle.italic),
),
TextSpan(text:data[4]),
TextSpan(
正文:数据[5],
样式:TextStyle(
fontWeight:fontWeight.bold,
fontStyle:fontStyle.italic),
TextSpan(text:data[6]),
],
),
);
但是,我需要在运行时以编程方式创建小部件(使用某种生成器函数或其他东西)

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

有人知道如何在颤振中的一个段落中做类似的事情吗,来自数组/列表/地图)

提前谢谢你


下面显示了一个数据数组和手动工作的代码示例(撇开如何准确提供样式类型的问题不谈。在我弄清楚如何从数组中显示同一段落中的字符串后,我可以研究这个问题)。

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

<InlineSpan>[
  for(var string in data)
    TextSpan(text: string),
]
[
for(数据中的变量字符串)
TextSpan(text:string),
]

谢谢@MickaelHrndz和@psink

@米开尔赫姆兹-它工作得很好!!!非常感谢

以下是第一部分的相关代码-将字符串数组/列表放入同一段落中:

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)),
          ]),
        ),
      ),
var列表=[
“一个asdfads”,
“两个fasdf aeer”,
“三架asdf 23v ar uppo”,
“四辆aspl ojv mepfif hepv”
];      
...
正文:中(
//中心是一个布局小部件。它接受一个子元素并对其进行定位
/在父母的中间。
孩子:RichText(
text:TextSpan(子项:[
for(列表中的变量字符串)
TextSpan(文本:字符串,样式:TextStyle(颜色:Colors.black)),
]),
),
),
下面是手机上的结果截图:

更新:使用三元运算符在中处理样式

完美的工作,与造型!!!!谢谢大家

以下是更新的结果:


我遇到这种情况,我的解决方案是将它们存储在文本字段中,并使文本字段无法使用,因此用户无法与之交互it@Reign文本字段用于输入。我们只是接收并在页面上显示JSON文件中的静态文本。与文本字段或修改无关。只想在同一段落中显示固定的文本,并为段落的各个单词和部分设置样式。如果我们想使用listview将它们放在一个列表中,这很容易做到……但这会将它们分别放在一行中。我们想把它们放在同一段。是的,我知道。但是,您可以将文本字段设置为unable=false,这样您就无法与它交互,就像readonly函数一样。因为textfield可以读取、粗体、斜体等等。在我的文本字段中,我只使用initialvalue将数据存储到textfield。如果你找到一种方法,请告诉我我也需要它。哈哈哈,是的,你需要一些生成器,例如感谢你的回复。是的,我昨天在做这个-一个循环。我想我需要遍历数据并创建列表。然后将列表传递给RichText或Text.rich的子元素。我们今天会解决这个问题。再次感谢。@pskink-谢谢。给我一些想法。可以创建添加到子级的InlineSpans列表,并返回该列表。听起来不错。我们将对此进行探讨。谢谢谢谢@Mickeelhmdz…它工作得很好!主体:中心(//中心是布局小部件)。它需要一个单独的子并将其定位在父的中间。子:RichText(文本:Text Stand(儿童:[用于(列表中的var字符串)Text Script(文本:字符串,样式:Text Stand(颜色:颜色:黑色)),));实际上我不知道你想在这里做什么:如果你想在一个小部件中显示
列表
中的所有字符串(具有相同的样式),为什么不使用sim卡
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)),
          ]),
        ),
      ),