Flutter 的
setState
函数的签名如下:void setState (VoidCallback fn) // VoidCallback equivalent to `void Function()`
文件说明文档指出回调函数没有参数且没有返回值。
我注意到在默认的Flutter创建示例应用程序中可以完全合法地传递这样的函数给setState
:
void _incrementCounter() {
setState(() => _counter++);
}
然而,() => _counter++
定义了一个返回值为 int Function()
的函数。
因此,我创建了自己的测试:
void setState(void Function() fn) {
fn();
}
void main(List<String> arguments) {
//Ordinary int function
int a() {
print('go tiger!');
return 5;
}
setState(a);
}
这个方法完全正常!我有什么遗漏吗?为什么可以将带有返回值的函数回调传递给 setState
方法?
p.s:如果我为一个函数添加参数,例如 int a(int b)
,则会产生正确的错误提示。
The argument type 'int Function(int)' can't be assigned to the parameter type 'void Function()'. argument_type_not_assignable