【问题标题】:The element type 'List<Card>' can't be assigned to the list type 'Widget'元素类型“List<Card>”不能分配给列表类型“Widget”
【发布时间】:2019-11-29 02:00:40
【问题描述】:

我不明白在从子项中删除方括号[] 后如何使用列小部件。我想从字符串元素列表中创建一个卡片列表。我使用了 map 方法。

我在列小部件中使用 map 方法,它不断显示错误The element type 'List&lt;Card&gt;' can't be assigned to the list type 'Widget'。我通过将 flight.map((element){}) 包装在另一个列小部件中然后删除子项的 [] 来解决它。

Column(
              children:[ flights.map(
                    (element) => Card(
                  child: Column(
                    children: <Widget>[
                      Image.asset('images/flight.jfif'),
                      Text(element)
                    ],
                  ),
                ),
              ).toList(),]
            )
          ],
)

之后

Column(
              children: flights.map(
                    (element) => Card(
                  child: Column(
                    children: <Widget>[
                      Image.asset('images/flight.jfif'),
                      Text(element)
                    ],
                  ),
                ),
              ).toList(),
            )
          ],
        )

第一个代码sn-p显示元素类型'List'不能分配给列表类型'Widget'的错误。

第二个没有任何错误

【问题讨论】:

  • 是的。就是那个问题。为什么它们是多余的?我是一个初学者,直到现在每次我使用列小部件时,我都会把它们放在孩子之后。这是否意味着,我正在另一个列表中创建一个列表,或者类似的东西?

标签: flutter dart


【解决方案1】:

因为 children 需要小部件列表。但在您的第一种情况下,它正在获取列表列表,因为 flights.map 将返回卡片小部件列表。所以它变成了,

Column(
       children:[ []
    ],
)

但在第二种情况下,children 只会获得所需的小部件列表。于是就变成了,

Column(
       children: []  
)

这是正确的格式。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2021-07-04
    • 2021-10-24
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多