Visualização de conteudo
This commit is contained in:
@@ -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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user