【发布时间】:2021-12-08 09:30:52
【问题描述】:
为什么下面的代码适用于 if/else 而不是三元运算符?
ListView(
children: [
// Commented code not working
// isLogged ? ...loggedRows(context) : loginRow(context),
// Working code
if (isLogged)
...loggedRows(context)
else
loginRow(context),
ListTile(...),
ListTile(...),
])
loggedRows 和 loginRow 方法:
ListTile loginRow(BuildContext context) {
return ListTile(...)
}
List<ListTile> loggedRows(BuildContext context) {
return [ListTile(...), ListTile(...)];
}
我尝试根据用户是否登录显示不同的 ListTiles,并且使用 if/else 可以完美运行,但是当我尝试对三元运算符执行相同操作时,我得到了错误。
我尝试了几种括号组合,但没有一个对我有用。
使用最简单的模式,如注释代码,我在 Dart 分析中得到 3 个错误:
- 预计会找到“]”。
- 预计会找到“.”。
- 需要一个标识符。
不应该表现相同的三元运算符和 if/else 吗?
为什么会出现这些错误?
有谁知道使用三元运算符的正确语法是什么?
谢谢!
【问题讨论】:
-
和这个thread一样
-
是的,你是对的。抱歉,我没有发现那个威胁。无论如何......它不应该与三元运算符一起使用吗?如果没有,为什么不呢?
-
这两个不一样。三元运算符是表达式,if else 是语句
-
@pedropimont 不完全是,
if-else在这种情况下是 collection-if,它更类似于表达式而不是语句。
标签: list flutter dart widget ternary