首页 > 解决方案 > 这些代码中的问号是什么意思?

问题描述

这些源代码来自颤振教程

小部件 _buildRow(WordPair pair) { final bool alreadySaved = _saved.contains(pair); return new ListTile( title: new Text( pair.asPascalCase, style: _biggerFont, ), trailing: new Icon( // 从这里添加行... alreadySaved ? Icons.favorite : Icons.favorite_border, color: alreadySaved ? Colors. red : null, ), // ... 到这里。); }

这部分是什么意思?trailing: new Icon( // 从这里添加行... alreadySaved ? Icons.favorite : Icons.favorite_border, color: alreadySaved ? Colors.red : null, ), // ... 到这里。有人可以用相同的逻辑制作另一种形式的代码吗?我不明白这部分

标签: javaandroid-studiokotlinflutter

解决方案


它是三元运算符(或short-if)。例如以下是等价的:

if (COND) {
   X = A;
} else {
   X = B;
}

X = COND ? A : B; // if COND condition is met, execute A, otherwise execute B

见这篇文章

在您的示例中,如果变量alreadySaved为真,Icons.favorite则使用Colors.red. 如果alreadySaved为假,则Icons.favorite_border与颜色一起使用null


推荐阅读