我有一个抖动相机应用程序,能够播放录制的视频。问题是,我只能在按下按钮时才能播放它。如何创建创建窗口小部件(屏幕)而不是按下按钮时运行的代码,而不必按下按钮即可播放?这是我的代码:
这是按下按钮时的代码:
//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
谢谢!
答案 0 :(得分:1)
您可以从initState()
调用该函数。 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