我正在做audio_service的例子。
和I seems, auidoHandler。播放或暂停…Else调用只在
下面工作onPressed: auidoHandler.play
不喜欢
onPressed : () -> {auidoHandler.play}
我没有时间学习飞镖或扑动,但我必须这样做。
请告诉我。
onPressed
需要获得对函数的引用。auidoHandler.play
是一个函数,因此它可以被使用。
() -> {auidoHandler.play}
也是一个函数,但它没有做任何事情,因为它在末尾缺少函数调用操作符()
。
应该是() -> {auidoHandler.play();}
注意:您的问题onPressed: methodCall()
标题中所述的选项不起作用,因为methodCall()将在组件挂载时调用该函数,并且结果将作为要在事件上调用的函数传递。除非函数返回另一个函数,否则这将不起作用。
onPressed: auidoHandler.play,
等价于
onPressed: () {
auidoHandler.play();
},
或
onPressed: () => auidoHandler.play(),
实际上,linter更喜欢第一个版本(参见unnecessary_lambdas
)。
你的问题是,你没有调用方法auidoHandler.play
在你的第二个例子:
代替
onPressed : () -> {auidoHandler.play}
onPressed: () {
auidoHandler.play();
},
或
onPressed: () => auidoHandler.play(),