PACKET v1.0.0 - Initial release
App móvil Flutter para capturar contenido multimedia, etiquetarlo con hashes y enviarlo a backends configurables. Features: - Captura de fotos, audio, video y archivos - Sistema de etiquetas con bibliotecas externas (HST) - Packs de etiquetas predefinidos - Cola de reintentos (hasta 20 contenedores) - Soporte GPS - Hash SHA-256 auto-generado por contenedor - Persistencia SQLite local - Múltiples destinos configurables Stack: Flutter 3.38.5, flutter_bloc, sqflite, dio 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
33
lib/domain/entities/archivo_adjunto.dart
Normal file
33
lib/domain/entities/archivo_adjunto.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
enum ArchivoTipo { image, audio, video, document }
|
||||
|
||||
class ArchivoAdjunto {
|
||||
final String nombre;
|
||||
final String mimeType;
|
||||
final Uint8List bytes;
|
||||
final ArchivoTipo tipo;
|
||||
final String? hash;
|
||||
|
||||
ArchivoAdjunto({
|
||||
required this.nombre,
|
||||
required this.mimeType,
|
||||
required this.bytes,
|
||||
required this.tipo,
|
||||
this.hash,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'nombre': nombre,
|
||||
'tipo': mimeType,
|
||||
'contenido': bytes,
|
||||
};
|
||||
|
||||
int get sizeBytes => bytes.length;
|
||||
|
||||
String get sizeFormatted {
|
||||
if (sizeBytes < 1024) return '$sizeBytes B';
|
||||
if (sizeBytes < 1024 * 1024) return '${(sizeBytes / 1024).toStringAsFixed(1)} KB';
|
||||
return '${(sizeBytes / (1024 * 1024)).toStringAsFixed(1)} MB';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user