返回Flutter中的小部件列表

时间:2020-02-05 14:24:59

标签: flutter

Column(
                children: <Widget>[
                  ...myObject
                      .map((data) => Text("Text 1"), Text("Text 2")),
                ]
);

此代码块将失败,因为我将返回2个小部件而不是一个。如何在不创建地图内另一列的情况下修复它并返回所需的小部件?

1 个答案:

答案 0 :(得分:0)

首先,您不能使用箭头函数返回多个值,您需要将其更改为一个返回小部件列表的普通函数。其次,由于.map是惰性的,您需要使用.toList()方法,并且需要进行迭代才能映射执行。

通过这两个步骤,您将以List<List<Widget>>结尾,应该先将其放平,然后再将其返回到需要List<Widget>的列中。这可以通过带有身份函数的Iterable.expand()来实现。

您可以尝试以下操作:

                Column(
                  children: <Widget>[
                    ..._generateChildrens(myObjects),
                  ],
                ),

获取小部件的实际实现是:

  List<Widget> _generateChildrens(List myObjects) {
    var list = myObjects.map<List<Widget>>(
      (data) {
        var widgetList = <Widget>[];
        widgetList.add(Text("Text 1"));
        widgetList.add(Text("Text 2"));
        return widgetList;
      },
    ).toList();
    var flat = list.expand((i) => i).toList();
    return flat;
  }

希望有帮助!