Object.methodName() 和 Object..methodName() 飞镖之间的区别
Difference between Object.methodName() and Object..methodName() dart
我在看 this 关于 image_picker 和 video_player 库的文章,我看到了下面的代码:
_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)
但是在 .initialize() 中使用 await 关键字没有问题
那么在这个例子中使用 ..initialize() 和 .initialize() 有什么区别呢?
谢谢
它被称为级联表示法,在 Dart 语言之旅中有记录:
https://dart.dev/guides/language/language-tour#cascade-notation-
在您的示例中使用它的原因是因为该示例的作者希望变量 _videoPlayerController
是对 VideoPlayerController.file(_video)
而不是 [=13= 创建的对象的引用] 从 then()
.
返回
你也可以这样写同样的代码:
_videoPlayerController = VideoPlayerController.file(_video);
_videoPlayerController.initialize().then((_) {
setState(() { });
_videoPlayerController.play();
});
所以您不能等待 VideoPlayerController.file(_video)..initialize().then(
的原因是该行的结果不是 Future
而是 VideoPlayerController
对象。
我在看 this 关于 image_picker 和 video_player 库的文章,我看到了下面的代码:
_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)
但是在 .initialize() 中使用 await 关键字没有问题
那么在这个例子中使用 ..initialize() 和 .initialize() 有什么区别呢?
谢谢
它被称为级联表示法,在 Dart 语言之旅中有记录: https://dart.dev/guides/language/language-tour#cascade-notation-
在您的示例中使用它的原因是因为该示例的作者希望变量 _videoPlayerController
是对 VideoPlayerController.file(_video)
而不是 [=13= 创建的对象的引用] 从 then()
.
你也可以这样写同样的代码:
_videoPlayerController = VideoPlayerController.file(_video);
_videoPlayerController.initialize().then((_) {
setState(() { });
_videoPlayerController.play();
});
所以您不能等待 VideoPlayerController.file(_video)..initialize().then(
的原因是该行的结果不是 Future
而是 VideoPlayerController
对象。