Flutter中如何对可空列表执行map操作适配非空Widget列表要求
问题描述
我是Flutter新手,短时间内搜索相关内容没有找到解决方案,因此发帖求助。
我的问题代码如下:
// `myList` 可能为null。 children: widget.myList?.map((item) { return Text("Hi."); }).toList(),
我需要在有状态Widget的Column组件的children:属性中遍历类型为List<String>?的错误列表。
Dart提示我不能对List<String>?执行map操作,建议我改用myList?.map写法。
但修改后又出现新的问题:children:要求传入List<Widget>类型的参数,不接受List<Widget>?类型的返回值。
我目前卡在这个循环报错里,感觉解决方案应该很简单,我还在学习null-safety相关规则。
简言之:我该如何处理可空的Widget列表,使其满足要求传入非空Widget列表的属性的使用要求?
解决方案
使用Dart空值默认运算符??处理可空列表的返回值即可,代码如下:
children: myList?.map((e) => Text(e)).toList() ?? [],
规则说明
?.运算符保证myList为null时,整个map+toList的调用链直接返回null,不会触发空调用异常??运算符会判断前序值是否为null,若为null则自动替换为后方指定的默认值,这里我们设置空数组[]作为默认值- 最终返回的结果一定是
List<Widget>类型,完全符合Column组件children属性的参数要求
内容的提问来源于stack exchange,提问作者Barry D.
相关产品推荐
相关产品推荐

