12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import 'dart:typed_data';
- import 'package:fis_common/logger/logger.dart';
- import 'package:fis_vid/cache/io.dart';
- import 'package:fis_vid/common/vid_download.dart';
- import 'package:vid/us/vid_us_image.dart';
- import 'package:vid/us/vid_us_image_data.dart';
- import 'base.dart';
- class VidImageFetcher extends VidImageFetcherBase {
- VidFileDownloadCancelToken? _downloadCancelToken;
- VidImageFetcher(String url) : super(url);
- @override
- Future<VidUsImage?> innerFetch() async {
- final vidBuffer = await _loadVidFile(url);
- if (vidBuffer != null) {
- final vidData = VidUsImageData(vidBuffer);
- final frame = vidData.getImage(0);
- return frame;
- }
- return null;
- }
- @override
- void dispose() {
- _downloadCancelToken?.cancel();
- }
- Future<Uint8List?> _loadVidFile(String url) async {
- final cachedFile = await VidNativeCache.ins.getCache(url);
- if (cachedFile != null) return cachedFile;
- _downloadCancelToken = VidFileDownloadCancelToken();
- final buffer = await VidFileDownloader.download(
- url,
- cancelToken: _downloadCancelToken,
- );
- if (buffer != null) {
- await VidNativeCache.ins.saveCache(url, buffer);
- }
- return buffer;
- }
- }
|