import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; @immutable class Video extends Equatable { Video({ this.id = '', this.url = '', this.extractor = '', this.isParsed = false, this.status = 'pending', this.format = 'MP4 HD', this.title = '', this.thumbnail = '', this.description = '', this.duration = '0:00', this.uploader = '', this.uploadDate = '', this.filename = '', }); final String id; final String url; final String extractor; final bool isParsed; final String status; final String format; final String title; final String thumbnail; final String description; final String duration; final String uploader; final String uploadDate; final String filename; factory Video.fromJson(Map json) { return Video( id: json['id'], isParsed: true, url: json['url'] ?? json['original_url'], extractor: json['extractor_key'] ?? '', title: json['title'], thumbnail: json['thumbnails']![0]['url'], description: json['description'] ?? '', duration: json['duration_string'] ?? '0:00', uploader: json['uploader'] ?? '', uploadDate: json['upload_date'] ?? ''); } //set Status Video copyWith({ String? id, String? url, String? extractor, bool? isParsed, String? status, String? format, String? title, String? thumbnail, String? description, String? duration, String? uploader, String? uploadDate, String? filename, }) { return Video( id: id ?? this.id, url: url ?? this.url, extractor: extractor ?? this.extractor, isParsed: isParsed ?? this.isParsed, status: status ?? this.status, format: format ?? this.format, title: title ?? this.title, thumbnail: thumbnail ?? this.thumbnail, description: description ?? this.description, duration: duration ?? this.duration, uploader: uploader ?? this.uploader, uploadDate: uploadDate ?? this.uploadDate, filename: filename ?? this.filename, ); } @override List get props => [ id, title, thumbnail, description, duration, uploader, uploadDate, format, status, url, isParsed, filename, ]; }