我正在使用audio_service示例。我似乎,auidoHandler.play或暂停..其他调用只像下面这样工作
onPressed: auidoHandler.play
不像
onPressed : () -> {auidoHandler.play}
我没有时间学习 dart 或扑,但我必须这样做。请照亮我。
r1zhe5dt1#
onPressed需要提供一个函数的引用。auidoHandler.play是一个函数,因此可以使用。() -> {auidoHandler.play}也是一个函数,但它什么也不做,因为它在末尾缺少函数调用操作符()。应该是() -> {auidoHandler.play();}
onPressed
auidoHandler.play
() -> {auidoHandler.play}
()
() -> {auidoHandler.play();}
**注意:**您的问题onPressed: methodCall()标题中的选项将不起作用,因为methodCall()将在组件挂载时调用函数,并且结果将作为要在事件上调用的函数传递。除非函数返回另一个函数,否则这将不起作用。
onPressed: methodCall()
brccelvz2#
onPressed: auidoHandler.play,
相当于
onPressed: () { auidoHandler.play(); },
或
onPressed: () => auidoHandler.play(),
事实上,linter更喜欢第一个版本(参见unnecessary_lambdas)。你的问题是你没有在第二个例子中调用auidoHandler.play方法:替换
unnecessary_lambdas
与
2条答案
按热度按时间r1zhe5dt1#
onPressed
需要提供一个函数的引用。auidoHandler.play
是一个函数,因此可以使用。() -> {auidoHandler.play}
也是一个函数,但它什么也不做,因为它在末尾缺少函数调用操作符()
。应该是
() -> {auidoHandler.play();}
**注意:**您的问题
onPressed: methodCall()
标题中的选项将不起作用,因为methodCall()将在组件挂载时调用函数,并且结果将作为要在事件上调用的函数传递。除非函数返回另一个函数,否则这将不起作用。brccelvz2#
相当于
或
事实上,linter更喜欢第一个版本(参见
unnecessary_lambdas
)。你的问题是你没有在第二个例子中调用
auidoHandler.play
方法:替换
与
或