Visualização de conteudo

This commit is contained in:
2026-05-19 21:54:37 +01:00
parent 54d7042b94
commit 80ed2b1346
13 changed files with 1121 additions and 431 deletions

View File

@@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:intl/intl.dart';
import 'package:path/path.dart' as path;
import 'package:url_launcher/url_launcher.dart';
import '../../../../core/services/auth_service.dart';
@@ -825,6 +826,31 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
);
}
Future<void> _openFile(String? url, String fileName) async {
if (url == null || url.isEmpty) {
_showErrorSnackBar('URL do ficheiro não disponível');
return;
}
try {
print('Opening file: $fileName');
print('URL: $url');
final uri = Uri.parse(url);
final launched = await launchUrl(
uri,
mode: LaunchMode.externalApplication,
);
if (!launched) {
_showErrorSnackBar('Não foi possível abrir o ficheiro');
}
} catch (e) {
print('Error opening file: $e');
_showErrorSnackBar('Erro ao abrir ficheiro: $e');
}
}
Widget _buildMaterialCard({
required String docId,
required String fileName,
@@ -893,14 +919,24 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
fontSize: 13,
),
),
trailing: IconButton(
icon: const Icon(Icons.delete_outline, color: Colors.red),
tooltip: 'Eliminar',
onPressed: () => _showDeleteConfirmation(
docId: docId,
fileName: fileName,
url: url,
),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(Icons.visibility_outlined, color: Colors.blue),
tooltip: 'Ver',
onPressed: () => _openFile(url, fileName),
),
IconButton(
icon: const Icon(Icons.delete_outline, color: Colors.red),
tooltip: 'Eliminar',
onPressed: () => _showDeleteConfirmation(
docId: docId,
fileName: fileName,
url: url,
),
),
],
),
),
);