Flutter,onPressed之间有什么不同:(){...}. and onPressed:methodCall()

p3rjfoxz  于 2023-04-13  发布在  Flutter
关注(0)|答案(2)|浏览(80)

我正在使用audio_service示例。
我似乎,auidoHandler.play或暂停..其他调用只像下面这样工作

onPressed: auidoHandler.play

不像

onPressed : () -> {auidoHandler.play}

我没有时间学习 dart 或扑,但我必须这样做。
请照亮我。

r1zhe5dt

r1zhe5dt1#

onPressed需要提供一个函数的引用。auidoHandler.play是一个函数,因此可以使用。
() -> {auidoHandler.play}也是一个函数,但它什么也不做,因为它在末尾缺少函数调用操作符()
应该是() -> {auidoHandler.play();}

**注意:**您的问题onPressed: methodCall()标题中的选项将不起作用,因为methodCall()将在组件挂载时调用函数,并且结果将作为要在事件上调用的函数传递。除非函数返回另一个函数,否则这将不起作用。

brccelvz

brccelvz2#

onPressed: auidoHandler.play,

相当于

onPressed: () {
  auidoHandler.play();
},

onPressed: () => auidoHandler.play(),

事实上,linter更喜欢第一个版本(参见unnecessary_lambdas)。
你的问题是你没有在第二个例子中调用auidoHandler.play方法:
替换

onPressed : () -> {auidoHandler.play}

onPressed: () {
  auidoHandler.play();
},

onPressed: () => auidoHandler.play(),

相关问题