visualizzazione file dei servizi e copia nei file del cliente

This commit is contained in:
2026-04-20 12:58:06 +02:00
parent 78012fdbf3
commit 8dc1c661ed
15 changed files with 397 additions and 72 deletions

View File

@@ -0,0 +1,59 @@
import 'package:flutter/material.dart';
import 'package:pdfx/pdfx.dart';
import 'package:internet_file/internet_file.dart'; // flutter pub add internet_file
class PdfViewerWidget extends StatefulWidget {
final String url;
const PdfViewerWidget({super.key, required this.url});
@override
State<PdfViewerWidget> createState() => _PdfViewerWidgetState();
}
class _PdfViewerWidgetState extends State<PdfViewerWidget> {
late PdfControllerPinch _pdfController;
bool _isLoading = true;
@override
void initState() {
super.initState();
_initPdf();
}
Future<void> _initPdf() async {
// Scarica il file in memoria in modo fluido
final pdfData = await InternetFile.get(widget.url);
_pdfController = PdfControllerPinch(
document: PdfDocument.openData(pdfData),
);
if (mounted) setState(() => _isLoading = false);
}
@override
void dispose() {
_pdfController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (_isLoading) {
return const Center(child: CircularProgressIndicator());
}
return Scaffold(
// Usiamo Scaffold dentro il Dialog per avere l'AppBar e poter chiudere
appBar: AppBar(
title: const Text("Visualizzatore PDF"),
leading: IconButton(
icon: const Icon(Icons.close),
onPressed: () => Navigator.pop(context),
),
),
body: PdfViewPinch(
controller: _pdfController,
// pdfx gestisce nativamente il pinch to zoom!
),
);
}
}