I've a ListView of posts each post can contain a youtube video so I used youtube_player_flutter package to render the youtube video on each post.
The problem happened on scrolling the ListView it became laggy and slow after adding the youtube player. Also I've noticed that the placed youtube videos are loaded automatically on building the list even if I've disabled the autoPlay tag.
ListView.builder(
itemCount: posts.length,
itemBuilder: (_, i) => const YoutubePlayerWidget(videoUrl: posts[i].video!),
);
class YoutubePlayerWidget extends StatefulWidget {
final String? videoId;
final String? videoUrl;
const YoutubePlayerWidget({super.key, this.videoId, this.videoUrl});
@override
State<YoutubePlayerWidget> createState() => _YoutubePlayerWidgetState();
}
class _YoutubePlayerWidgetState extends State<YoutubePlayerWidget> {
late YoutubePlayerController _controller;
@override
initState() {
_controller = YoutubePlayerController(
initialVideoId: widget.videoId ?? YoutubePlayer.convertUrlToId(widget.videoUrl!)!,
flags: const YoutubePlayerFlags(
autoPlay: false,
mute: true,
isLive: false,
disableDragSeek: true,
loop: false,
forceHD: false,
),
);
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return YoutubePlayer(controller: _controller);
}
}