gpt4 book ai didi

flutter - dart和Object.methodName()之间的区别

转载 作者:行者123 更新时间:2023-12-03 04:53:31 27 4
gpt4 key购买 nike

我在看有关image_picker和video_player库的this文章,并且看到了下面的代码:

_videoPlayerController = VideoPlayerController.file(_video)..initialize().then((_) {
setState(() { });
_videoPlayerController.play();
});

他们为什么使用..initialize()而不是.initialize()?
我试图在项目中使用相同的代码,但是如果我使用..initialize(),IDE不允许我使用await关键字。

'await' applied to 'VideoPlayerController', which is not a 'Future'.dart(await_only_futures)



但是将await关键字与.initialize()一起使用没有问题

那么在此示例中,使用..initialize()和.initialize()有什么区别?

谢谢

最佳答案

它称为级联符号,在Dart语言导览中有记录:
https://dart.dev/guides/language/language-tour#cascade-notation-

在您的示例中使用它的原因是因为该示例的作者希望变量_videoPlayerController是对VideoPlayerController.file(_video)创建的对象的引用,而不是从Future返回的then()的引用。

您也可以通过以下方式编写相同的代码:

_videoPlayerController = VideoPlayerController.file(_video);

_videoPlayerController.initialize().then((_) {
setState(() { });
_videoPlayerController.play();
});

因此,您不能等待 VideoPlayerController.file(_video)..initialize().then(的原因是该行的结果不是 Future,而是 VideoPlayerController对象。

关于flutter - dart和Object.methodName()之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60970349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com