Flutter, onPressed:(){..}有什么不同?和onPressed: methodCall()



我正在做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(),

相关内容

  • 没有找到相关文章

最新更新