【发布时间】:2020-09-30 03:24:03
【问题描述】:
flutter setState 函数有签名:
void setState (VoidCallback fn) // VoidCallback equivalent to void Function()
文档声明它接受没有参数且没有返回值的回调。
我注意到向 setState 传递这样的函数是完全合法的(在默认的 Flutter 创建示例应用的情况下)
void _incrementCounter() {
setState(() => _counter++);
}
但是() => _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);
}
这很好用!我错过了什么吗?为什么可以给 setState 传递一个带返回值的函数回调?
p.s:如果我将参数添加到 - 所以int a(int b) 那么它会正确地抱怨 -
The argument type 'int Function(int)' can't be assigned to the parameter type 'void Function()'.dartargument_type_not_assignable
【问题讨论】: