import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:video_player/video_player.dart'; class VideoWidget extends StatefulWidget { final bool play; final String pathFile; const VideoWidget({Key key, @required this.pathFile, @required this.play}) : super(key: key); @override _VideoWidgetState createState() => _VideoWidgetState(); } class _VideoWidgetState extends State { VideoPlayerController videoPlayerController; Future _initializeVideoPlayerFuture; @override void initState() { super.initState(); videoPlayerController = VideoPlayerController.file(File(widget.pathFile)); _initializeVideoPlayerFuture = videoPlayerController.initialize().then((_) { // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed. videoPlayerController.play(); videoPlayerController.setVolume(0.0); Timer.periodic(Duration(seconds: 1), (_) { videoPlayerController.pause(); }); setState(() {}); }); } @override void dispose() { videoPlayerController.dispose(); print("dispose video item"); super.dispose(); } @override Widget build(BuildContext context) { return FutureBuilder( future: _initializeVideoPlayerFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return new Container( child: Container( key: new PageStorageKey(widget.pathFile), child: Container( padding: EdgeInsets.all(1), width: 100, height: 100, decoration: BoxDecoration( color: Colors.white, border: Border.all(color: Colors.red), borderRadius: BorderRadius.all(Radius.circular(8.0))), child: VideoPlayer(videoPlayerController), ), ), ); } else { return Center( child: CircularProgressIndicator(), ); } }, ); } }