我有这样定义的字符串列表:
var list = ["one", "two", "three", "four"];
我想使用文本小部件在屏幕上并排显示值。我试图使用以下代码来尝试此操作:
for (var name in list) { return new Text(name); }
但是,当我运行此代码时,for循环仅运行一次,并且仅呈现一个文本小部件,该小部件表示one(列表中的第一项)。另外,当我在for循环中添加一条日志消息时,它也会被触发一次。为什么我的for循环不是基于列表的长度?它似乎只运行一次,然后退出。
one
基本上,当您在函数上单击“ return”时,该函数将停止并且不会继续进行迭代,因此您需要做的是将其全部放入列表中,然后将其添加为小部件的子级
您可以执行以下操作:
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()); }