import 'dart:io'; import 'dart:typed_data'; import 'package:mime/mime.dart'; import 'package:path/path.dart' as p; class FilesModel { final String path; late String basename; late String extname; late File main; final bool isRecorded; final bool? audio; final bool? image; final bool? network; final Uint8List? bytes; final Duration? duration; FilesModel( this.path, { final String? name, this.isRecorded = false, this.audio, this.image, this.network, this.bytes, this.duration, }) { basename = name ?? p.basename(path); extname = path.isNotEmpty ? p.extension(path) : name != null ? p.extension(name) : ''; main = File(path); } bool isAudio() { return audio ?? (lookupMimeType(path)?.startsWith('audio/') ?? false) || (lookupMimeType(path)?.startsWith('video/') ?? false); } bool isImage() { return image ?? lookupMimeType(path)?.startsWith('image/') ?? false || path.contains(".png"); } bool isNetwork() { return network ?? path.startsWith('blob:') || path.startsWith('/uploads'); } }