小编Mic*_*han的帖子

为什么可以将类型 (() => int) 的回调传递到 flutter setState 函数中?

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)

dart flutter

3
推荐指数
1
解决办法
75
查看次数

标签 统计

dart ×1

flutter ×1