【发布时间】:2019-08-16 11:06:30
【问题描述】:
我对 Dart/Flutter 非常陌生,我对 => 表示法感到困惑。文档说 => 表示法用作返回单个表达式的简写。
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
当我尝试在颤振应用程序中设置状态时,我的疑问就出现了。
RaisedButton(
onPressed: () => {
setState(() {
print('hello');
_products.add('More stuff');
})
},
child: Text('Add Product'),
),
现在,当我用 => 表示法更改 setState 方法时
RaisedButton(
onPressed: () => {
setState(() => {
print('hello'),
_products.add('More stuff'),
})
},
child: Text('Add Product'),
),
上述两种方法都有效,即它们按预期设置状态。我所要做的就是在使用粗箭头符号时将分号更改为逗号。
这背后的逻辑是什么?粗箭头符号如何与包含多个表达式的花括号一起使用。
编辑
正如 Hemanth Raj 所说,=> 返回一个集合,包含 => 符号的代码段可以编写如下。
RaisedButton(
onPressed: () => {
setState(() {
return {
print('hello'),
_products.add('More stuff'),
};
})
},
child: Text('Add Product'),
),
返回的set 包含打印函数和_products.add 如何实际更新状态。它不应该抛出某种错误吗,因为通常 setState 是由诸如_products.add('More stuff'); 之类的表达式完成的。
【问题讨论】:
-
这不是重复的,这是一个非常有趣的问题@MazinIbrahim。这是
Dart 2.2中引入的定义Set的新方法的结果。