I am trying to create a tik tok ui clone in flutter. I want to display videos from my assets but the videos are not being displayed when I run the code. Can someone look over my code and give any recommendations?
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class VideoTile extends StatefulWidget {
const VideoTile({Key? key}) : super(key: key);
@override
_VideoTileState createState() => _VideoTileState();
}
class _VideoTileState extends State<VideoTile> {
late VideoPlayerController _videoController;
late Future _intitializeVideoPlayer;
@override
void initState() {
_videoController = VideoPlayerController.asset('assets/nft_vid1.mp4');
_intitializeVideoPlayer = _videoController.initialize();
_videoController.setLooping(true);
_videoController.play();
super.initState();
}
@override
void dispose() {
_videoController.dispose();
super.dispose();
}
Widget build(BuildContext context) {
return Container(
color: Colors.blue,
child: FutureBuilder(
future: _intitializeVideoPlayer,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return VideoPlayer(_videoController);
} else {
return Container(color: Colors.pink);
}
},
),
);
}
}
CodePudding user response:
You can try this code:
import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';
class AssetVideo extends StatefulWidget {
@override
AssetVideoState createState() => AssetVideoState();
}
class AssetVideoState extends State<AssetVideo> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.asset('assets/nft_vid1.mp4');
_controller.addListener(() {
setState(() {});
});
_controller.setLooping(true);
_controller.initialize().then((_) => setState(() {}));
_controller.play();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Video Demo',
home: Scaffold(
body: Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
),
);
}
CodePudding user response:
My original code was working. Just had to close out my IDE and restart my simulator.
CodePudding user response:
you can use video_player library