我看到人们通常这样初始化控制器,用initState()
方法初始化它。
late VideoPlayerController _videoPlayerController;
@override
void initState() {
super.initState();
_videoPlayerController = VideoPlayerController.network(
"https://assets.mixkit.co/videos/preview/mixkit-spinning-around-the-earth-29351-large.mp4");
}
但后来我意识到如果我把控制器像这样放进去,不放initState()
,只是把控制器放在变量后面,late放在变量前面,一切都很好,那有什么区别呢?
class _VideoDetailScreenState extends State<VideoDetailScreen> {
late VideoPlayerController _videoPlayerController = VideoPlayerController.network(
"https://assets.mixkit.co/videos/preview/mixkit-spinning-around-the-earth-29351-large.mp4");
1条答案
按热度按时间pbpqsu0x1#
从official documentation开始:
框架调用initState。State的子类应该覆盖initState,以执行依赖于
BuildContext
或小部件的一次性初始化,当调用initState方法时,BuildContext
或小部件分别作为上下文和小部件属性可用。