一尘不染

遍历列表以在Flutter中呈现多个小部件?

flutter

我有这样定义的字符串列表:

var list = ["one", "two", "three", "four"];

我想使用文本小部件在屏幕上并排显示值。我试图使用以下代码来尝试此操作:

for (var name in list) {
   return new Text(name);
}

但是,当我运行此代码时,for循环仅运行一次,并且仅呈现一个文本小部件,该小部件表示one(列表中的第一项)。另外,当我在for循环中添加一条日志消息时,它也会被触发一次。为什么我的for循环不是基于列表的长度?它似乎只运行一次,然后退出。


阅读 867

收藏
2020-08-13

共1个答案

一尘不染

基本上,当您在函数上单击“ 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());
  }
2020-08-13