例如,我有一个Wrap小部件,在孩子中我有一些代码,如:
listTask.map((e) {
if (e.day!.contains(value))
return Padding(
padding: const EdgeInsets.all(4.0),
child: Container(
decoration: BoxDecoration(
shape: BoxShape.circle, color: Colors.black),
height: 20,
width: 20,
),
);
}).toList()
我希望它在传递if语句时返回Padding,但它得到错误The argument type 'List<Padding?>' can't be assigned to the parameter type 'List<Widget>'
。我如何解决这个问题?谢谢。
2条答案
按热度按时间z9smfwbn1#
问题是,如果
if
条件失败,则对List.map
的回调不会显式返回任何内容,因此回调隐式返回null
,最终得到的是List<Padding?>
而不是List<Padding>
。List.map
创建了从输入元素到输出元素的1:1Map。然后过滤掉
null
元素,或者使用collection-for
和collection-if
:参见:How to convert a List<T?> to List in null safe Dart?
ca1c2owp2#
试试这个:
listTask.map((e)Map