不带括号和带括号调用函数有什么区别

M.A*_*han 5 dart flutter

在 onPressed 或 Ontap 上调用不带括号的函数和带括号的函数有什么区别?

我只知道不能在 onPressed 上使用括号调用 void 函数。

floatingActionButton: FloatingActionButton(
    onPressed: _incrementCounter,
    tooltip: 'Increment',
    child: Icon(Icons.add),
  ),
Run Code Online (Sandbox Code Playgroud)

_incrementCounter 有 void 返回类型

void _incrementCounter() {
    setState(() {
        _counter++;
    });  
}
Run Code Online (Sandbox Code Playgroud)

但我没有找到任何适当的文件。

Pet*_*dad 7

_incrementCounterinsideonPressed是一个函数引用,这基本上意味着它不是立即执行的,它是在用户单击特定小部件后执行的。(回调)

_incrementCounter() 是一个函数调用,它会立即执行。

因此,onPressed您可以在内部传递函数引用或匿名函数作为回调。

floatingActionButton: FloatingActionButton(
    onPressed: _incrementCounter,
    tooltip: 'Increment',
    child: Icon(Icons.add),
  ),
Run Code Online (Sandbox Code Playgroud)

或者

floatingActionButton: FloatingActionButton(
    onPressed: () {
        // Add your onPressed code here!
      },
    tooltip: 'Increment',
    child: Icon(Icons.add),
  ),
Run Code Online (Sandbox Code Playgroud)

这不是特定于 dart 的东西,它也可以用javascript许多其他语言完成:

函数调用和函数引用有什么区别?

带/不带括号的 Javascript 函数调用