VideoThumbnail File Error ----- MissingPluginException(No implementation found for method file on channel plugins.justsoft.xyz/video_thumbnail).
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:video_thumbnail/video_thumbnail.dart';
import 'package:path_provider/path_provider.dart';
class VideoThumbnailWidget extends StatefulWidget {
final String videoUrl;
const VideoThumbnailWidget({super.key, required this.videoUrl});
@OverRide
State createState() => _VideoThumbnailWidgetState();
}
class _VideoThumbnailWidgetState extends State {
File? _thumbnailFile;
@OverRide
void initState() {
super.initState();
_generateThumbnail();
}
Future _generateThumbnail() async {
final thumbPath = await VideoThumbnail.thumbnailFile(
video: widget.videoUrl,
thumbnailPath: (await getTemporaryDirectory()).path, // save in temp dir
imageFormat: ImageFormat.PNG,
quality: 75,
);
if (mounted && thumbPath != null) {
setState(() {
_thumbnailFile = File(thumbPath);
});
}
}
@OverRide
Widget build(BuildContext context) {
if (_thumbnailFile == null) {
return const Center(child: CircularProgressIndicator());
}
return Image.file(
_thumbnailFile!,
width: double.infinity,
height: 200, // you can adjust height
fit: BoxFit.cover,
);
}
}
VideoThumbnail File Error ----- MissingPluginException(No implementation found for method file on channel plugins.justsoft.xyz/video_thumbnail).
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:video_thumbnail/video_thumbnail.dart';
import 'package:path_provider/path_provider.dart';
class VideoThumbnailWidget extends StatefulWidget {
final String videoUrl;
const VideoThumbnailWidget({super.key, required this.videoUrl});
@OverRide
State createState() => _VideoThumbnailWidgetState();
}
class _VideoThumbnailWidgetState extends State {
File? _thumbnailFile;
@OverRide
void initState() {
super.initState();
_generateThumbnail();
}
Future _generateThumbnail() async {
final thumbPath = await VideoThumbnail.thumbnailFile(
video: widget.videoUrl,
thumbnailPath: (await getTemporaryDirectory()).path, // save in temp dir
imageFormat: ImageFormat.PNG,
quality: 75,
);
}
@OverRide
Widget build(BuildContext context) {
if (_thumbnailFile == null) {
return const Center(child: CircularProgressIndicator());
}
return Image.file(
_thumbnailFile!,
width: double.infinity,
height: 200, // you can adjust height
fit: BoxFit.cover,
);
}
}