flutter setState 函数具有签名:
void setState (VoidCallback fn) // VoidCallback equivalent to void Function()
Run Code Online (Sandbox Code Playgroud)
文档声明它需要没有参数和返回值的回调。
我注意到将这样的函数传递给 setState 是完全合法的(在默认 flutter create 示例应用程序的情况下)
void _incrementCounter() {
setState(() => _counter++);
}
Run Code Online (Sandbox Code Playgroud)
但是() => _counter++定义了一个返回值的函数。Type (() => dynamic)
所以我创建了自己的测试台:
void setState(void Function() fn) {
fn();
}
void main(List<String> arguments) {
//Ordinary int function
int a() {
print('go tiger!');
return 5;
}
setState(a);
}
Run Code Online (Sandbox Code Playgroud)
这工作得很好!我错过了什么吗?为什么可以将带有返回值的函数回调传递给 setState?
ps:如果我向 a 添加一个参数 -int a(int b)那么它会正确地抱怨 -
The argument type 'int Function(int)' can't be assigned …Run Code Online (Sandbox Code Playgroud)