import 'package:equatable/equatable.dart'; import 'package:flutter/foundation.dart'; import 'package:mime/mime.dart'; class FileInfo with EquatableMixin { final String fileName; final String filePath; final int fileSize; final Stream>? readStream; final Uint8List? bytes; FileInfo(this.fileName, this.filePath, this.fileSize, {this.readStream, this.bytes}); factory FileInfo.empty() { return FileInfo('', '', 0); } factory FileInfo.fromStream({ required Stream> stream, String? name, int? size }) { return FileInfo(name ?? '', '', size ?? 0, readStream: stream); } String get fileExtension => fileName.split('.').last; String get mimeType => lookupMimeType(kIsWeb ? fileName : filePath) ?? 'application/json; charset=UTF-8'; @override List get props => [fileName, filePath, fileSize, readStream, bytes]; }