Flutter 获取小部件创建时运行的代码
我有一个颤振相机应用程序,能够得到一个录制的视频播放。问题是,我只能在按下按钮时让它播放。我如何让代码在创建小部件(屏幕)时运行,而不是在按下按钮时运行,这样我就不必按下按钮来播放它了?这是我的密码: 按下按钮时的代码如下:Flutter 获取小部件创建时运行的代码,flutter,dart,Flutter,Dart,我有一个颤振相机应用程序,能够得到一个录制的视频播放。问题是,我只能在按下按钮时让它播放。我如何让代码在创建小部件(屏幕)时运行,而不是在按下按钮时运行,这样我就不必按下按钮来播放它了?这是我的密码: 按下按钮时的代码如下: //raised button RaisedButton( onPressed: () {stopButtonPressed();}, //stopButtonPressed void stopButtonPressed() {
//raised button
RaisedButton(
onPressed: () {stopButtonPressed();},
//stopButtonPressed
void stopButtonPressed() {
print('stopButtonPressed hit');
stopVideoRecording().then((_) {
print('StopVideoRecording complete');
});
}
//stopVideoRecording
Future<void> stopVideoRecording() async {
print('stopVideoRecording hit');
await _startVideoPlayer();
}
//_startVideoPlayer
Future<void> _startVideoPlayer() async {
print('_startVideoPlayer hit');
print(Provider.of<SendDataModel>(context, listen: false).displayImageVideo());
final VideoPlayerController vcontroller =
VideoPlayerController.file(File(Provider.of<SendDataModel>(context, listen: false).displayImageVideo()));
videoPlayerListener = () {
if (videoController != null && videoController.value.size != null) {
if (mounted) setState(() {});
videoController.removeListener(videoPlayerListener);
}
};
vcontroller.addListener(videoPlayerListener);
await vcontroller.setLooping(true);
await vcontroller.initialize();
await videoController?.dispose();
if (mounted) {
setState(() {
//saveImagePath = null;
videoController = vcontroller;
});
}
await vcontroller.play();
} //startVideoPlayer
//升起的按钮
升起的按钮(
按下时:(){stopButtonPressed();},
//停止按钮按下
void stopButtonPressed(){
打印(“stopButtonPressed hit”);
停止录像(){
打印(“停止录像完成”);
});
}
//停止录像
将来的stopVideoRecording()异步{
打印(“停止录像命中”);
等待startVideoPlayer();
}
//_明星视频播放器
Future\u startVideoPlayer()异步{
打印(“U startVideoPlayer hit”);
print(Provider.of(context,listen:false).displayImageVideo());
最终视频播放器控制器vcontroller=
VideoPlayerController.file(文件(Provider.of(context,listen:false).displayImageVideo());
videoPlayerListener=(){
if(videoController!=null&&videoController.value.size!=null){
如果(已安装)设置状态((){});
videoController.RemovelListener(videoPlayerListener);
}
};
vcontroller.addListener(videoPlayerListener);
等待vcontroller.setLooping(真);
等待vcontroller.initialize();
等待videoController?.dispose();
如果(已安装){
设置状态(){
//saveImagePath=null;
视频控制器=视频控制器;
});
}
等待vcontroller.play();
}//startVideoPlayer
谢谢!您可以从调用函数。
initState()
仅在将StatefulWidget
插入小部件树时调用一次,因此它是初始化变量或执行您尝试执行的操作的好地方
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
// Do anything you need done here
_startVideoPlayer();
// If you want a slight delay, use Future.delayed
Future.delayed(Duration(seconds: 1), (){
_startVideoPlayer();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
// rest of app
class\u MyHomePageState扩展状态{
@凌驾
void initState(){
super.initState();
//你需要在这里做什么
_startVideoPlayer();
//如果您想稍微延迟,请使用Future.delayed
未来。延迟(持续时间(秒:1),(){
_startVideoPlayer();
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
//应用程序的其余部分