我有一个这样定义的字符串列表:
var list = ["one", "two", "three", "four"];
我想使用文本小部件并排呈现屏幕上的值。我尝试使用以下代码来尝试:
for (var name in list) {
return new Text(name);
}
但是,当我运行此代码时,for 循环只运行一次,并且只有一个文本小部件被渲染,显示 one
(列表中的第一项)。此外,当我在我的 for 循环中添加一条日志消息时,它也会被触发一次。为什么我的 for 循环不根据列表的长度循环?它似乎只运行一次然后退出。
最佳答案
基本上,当您在函数上点击“返回”时,该函数将停止并且不会继续您的迭代,因此您需要做的就是将其全部放在一个列表中,然后将其添加为小部件的子级
你可以这样做:
Widget getTextWidgets(List<String> strings)
{
List<Widget> list = new List<Widget>();
for(var i = 0; i < strings.length; i++){
list.add(new Text(strings[i]));
}
return new Row(children: list);
}
甚至更好,您可以使用 .map() 运算符并执行以下操作:
Widget getTextWidgets(List<String> strings)
{
return new Row(children: strings.map((item) => new Text(item)).toList());
}
https://stackoverflow.com/questions/50441168/