feat: video download

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-11-06 12:12:32 +08:00
parent 976622df89
commit ffd4f9ee73
92 changed files with 4853 additions and 946 deletions

View File

@@ -1,54 +1,37 @@
import 'dart:io';
/// The way in which the video was originally loaded.
///
/// This has nothing to do with the video's file type. It's just the place
/// from which the video is fetched from.
enum DataSourceType {
/// The video was included in the app's asset files.
asset,
/// The video was downloaded from the internet.
network,
/// The video was loaded off of the local filesystem.
file,
/// The video is available via contentUri. Android only.
contentUri,
}
class DataSource {
File? file;
String? videoSource;
String? audioSource;
String? subFiles;
DataSourceType type;
Map<String, String>? httpHeaders; // for headers
DataSource({
this.file,
this.videoSource,
this.audioSource,
this.subFiles,
required this.type,
this.httpHeaders,
}) : assert(
(type == DataSourceType.file && file != null) || videoSource != null,
);
});
DataSource copyWith({
File? file,
String? videoSource,
String? audioSource,
String? subFiles,
DataSourceType? type,
Map<String, String>? httpHeaders,
}) {
return DataSource(
file: file ?? this.file,
videoSource: videoSource ?? this.videoSource,
audioSource: audioSource ?? this.audioSource,
subFiles: subFiles ?? this.subFiles,
type: type ?? this.type,
httpHeaders: httpHeaders ?? this.httpHeaders,
);