Flutter 颤振提取文本小部件并在不同位置修改它
我有一个Flutter 颤振提取文本小部件并在不同位置修改它,flutter,dart,Flutter,Dart,我有一个数据,它正在不同的文本中使用。下面是代码片段 var data = "Hello world"; Text( data, style: TextStyle(fontSize: 10), ); Text( data, style: TextStyle(fontSize: 15), ); Text( data, style: TextStyle(fontSize: 20), ); 正如您所看到的,文本(数据)在所有人中都很常见,所以我想我可以制作如下内容: v
数据
,它正在不同的文本中使用。下面是代码片段
var data = "Hello world";
Text(
data,
style: TextStyle(fontSize: 10),
);
Text(
data,
style: TextStyle(fontSize: 15),
);
Text(
data,
style: TextStyle(fontSize: 20),
);
正如您所看到的,文本(数据)
在所有人中都很常见,所以我想我可以制作如下内容:
var text = Text("Hello World");
text.copyWith(style: TextStyle(fontSize: 10));
text.copyWith(style: TextStyle(fontSize: 15));
text.copyWith(style: TextStyle(fontSize: 20));
但这是不可能的,任何人都可以告诉我如何实现这样的目标?也许你可以通过将它变成一个函数来实现它
可能是这样的:
Widget textFunction(int fontsize){
return Text(
data,
style: TextStyle(fontSize: fontsize),
);
}
你这样称呼它:
...
textFunction(10),
textFunction(15),
textFunction(20),
...
定义fontSize变量
var fontSize = 5.0;
然后使用for循环
Column(
children: <Widget>[
for (int i = 0; i <= 2; i++)
Text(
"Hello World!",
style: TextStyle(fontSize: fontSize += 5),
),
],
);
列(
儿童:[
对于(inti=0;i我也遇到了同样的问题,我就是这样解决的。我有一个小部件,可以创建一个链接文本(像一个普通的
html标记)
PS:本例中缺少一些代码片段,但它们无助于解决此问题
为我解决这个问题的代码如下:
Text(
this.label.data,
style: this.label.style.merge(
TextStyle(
color: color ??
this.label.style.color ??
defaultPrimaryColor,
),
),
)
因为标签被显式标记为文本小部件,所以我使用构造器中的文本重新创建了另一个文本小部件,然后我合并/修改了我感兴趣的样式……在本例中,只修改了颜色
color??this.label.style.color??defaultPrimaryColor
如果下面这些对我有用的话,那就太好了,但事实并非如此:(
所以您想用Text.copyWith(style:TextStyle(fontSize:20))替换文本(data,style:TextStyle(fontSize:20)).即使它能工作,也看不到它的好处。毕竟你编写的代码量是一样的。@Marc我认为在第一种情况下,我创建了3个不同的文本,在第二种情况下,我只是重复使用了文本的一个实例,但无论如何都不会这样。谢谢你,我知道我可以这样做,但我不想为它寻找函数。如果你要使您的第二段代码正常工作,请执行以下操作:var text1=Text(“Hello World”);var text2=Text(“Hello World”);var text3=Text(“Hello World”);并为每一段代码指定所需的样式。我怀疑作者是否考虑到了这一点。他希望重新使用文本小部件(可能在内存中),因为对代码的每一次尝试都会产生更复杂的代码,很可能会产生更多的打字和思考。对我来说,这个问题没有任何有意义的解决方案。@Marc是的,你是对的,@Lekr0抱歉,这不是我在看的,我既不想在列中使用我的文本
,也不想设置fontSize
是5
的倍数,为简单起见,我使用了该代码。不过,感谢您的回复!我认为创建文本一次并使用3次或更长时间会更好。
Text(
this.label.data,
style: this.label.style.merge(
TextStyle(
color: color ??
this.label.style.color ??
defaultPrimaryColor,
),
),
)
this.label..style.merge(
TextStyle(
color: color ??
this.label.style.color ??
defaultPrimaryColor,
),
)