【发布时间】:2021-04-23 13:30:56
【问题描述】:
在我的 Flutter 应用程序中,我尝试在我的一个小部件的 build() 方法中的三元运算符的 else 部分使用 Dart 扩展运算符(即-...)。
即-
class SearchCriteriaState extends State<SearchCriteria> {
List<SearchParameters> listSearchParam = [];
Widget build(BuildContext context) {
return Column(
children: [
Text('hey there'),
listSearchParam.isEmpty
? Text ('Empty
: ...listSearchParam.map((param)=>Text(param.toString()).toList(),
],
);
}
}
上面的代码无法编译,出现下面的错误,展开语句用红色下划线。
Expected to find ','.dart(expected_token)
如果我只用扩展语句替换整个三元组,它将编译并运行(除非它不处理列表为空的边缘条件)。
有什么想法吗?
我目前使用的解决方法是将展开语句包装在另一个 Column() 中,它可以工作,但很丑('怪不得我的法语)。
我已经搜索过类似的问题,我能找到的最接近的也是在三元组中使用扩展运算符的问题,但在我假设是 React 的 webpack 上下文中。
非常感谢所有建议。
/小何塞
【问题讨论】:
-
忘了说我的环境:Flutter 1.22.5 Mac OS Catelina 10.15.7
-
您忘记关闭文本小部件的括号。应该是
listSearchParam.isEmpty ? Text('Empty') : .... -
是的,我就是这个意思。这是我的错字。仅供参考 @rickimaru 提出了一个可行的建议,即用完整的 if-else 语句替换三元。