我有一个字符串列表和一个自定义无状态小部件,我想在每个字符串之后添加我的自定义小部件,并将它们全部显示为屏幕中的一个字符串。我想实现这样的目标。中间的数字应该是我的自定义小部件。
现在写我用我的代码得到这个结果。
代码:
customArabicText(BuildContext context) {
TextStyle textStyle = TextStyle(fontSize: 22);
List<Widget> widgets = [];
for (var i = 0; i < responceOfFutureBuilder.data.length; i++) {
number = arabicTextList[i].number.toString().toPersianDigit();
//_calcLastLineEnd(context, arabicTextList[i].arabicText);
final quranTextSize = calcTextSize(arabicTextList[i].arabicText, textStyle);
widgets.add(
SelectableText(
quranTextSpecificSuraList[i].arabicText.replaceFirst(
GetBismillah(
quranTextArabic: quranTextSpecificSuraList[i].quranTextArabic,
suraNumber: quranTextSpecificSuraList[i].suraNumber),
""),
style: TextStyle(fontSize: 22),
scrollPhysics: ClampingScrollPhysics(),
enableInteractiveSelection: true,
textWidthBasis: TextWidthBasis.parent,
),
);
widgets.add(MyCustomWidget(text: "$number"));
}
return Directionality(
textDirection: TextDirection.rtl,
child: Wrap(
clipBehavior: Clip.antiAlias,
crossAxisAlignment: WrapCrossAlignment.center,
spacing: 5,
children: widgets,
),
);
}
我的构建方法:
@override
Widget build(BuildContext context) {
return Container(
child: customArabicText(context),
);
}
在这段代码中,我从服务器端收到一个字符串列表,在 for 循环的帮助下,我遍历列表中的每个元素,并使用我的自定义小部件将每个元素添加到另一个列表中,因此新列表如下所示。
[0]: string1
[1]: myCustomWidget
[2]: string2
[3]: myCustomWidget
[4]: string3
[5]: myCustomWidget
[6]: string4
[7]: myCustomWidget
[8]: string5
list 的 join() 方法将是完美的,但 join() 方法只接受字符串,我无法将我的自定义小部件传递给 Join() 方法。
我使用 Wrap 小部件实现了某种解决方案,但它并没有完全完成工作。我正在试验大约 3 只飞蛾,但我没有找到任何解决方案。如果有人可以帮助我,我将不胜感激。
试试RichText
。这是一个演示:
@override
Widget build(BuildContext context, watch) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
RichText(
text: TextSpan(
children: [
TextSpan(
text: "Main text",
children: [
WidgetSpan(
child: SizedBox(
width: 40,
child: Icon(
Icons.book,
size: 42,
color: Colors.black38,
),
),
),
],
),
TextSpan(
text: "Main2 text",
children: [
WidgetSpan(
child: SizedBox(
width: 40,
child: Icon(
Icons.ac_unit,
size: 42,
color: Colors.black38,
),
),
),
],
),
],
),
),
Text("Next"),
RichText(
text: TextSpan(
children: [
TextSpan(
text: "Main text",
children: [
WidgetSpan(
child: SizedBox(
width: 40,
child: Icon(
Icons.book,
size: 42,
color: Colors.black38,
),
),
),
],
),
TextSpan(
text: "Main2 text",
children: [
WidgetSpan(
child: SizedBox(
width: 40,
child: Icon(
Icons.ac_unit,
size: 42,
color: Colors.black38,
),
),
),
],
),
],
),
),
],
);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句