← Flutter / Dart

Flutter / Dart · 14 / 18

Fotos, Dateien und PDF-Ausgabe koordinieren

Du erstellst ein PDF und unterscheidest Dateispeicher, Datenbankreferenz und bewussten Export.

  • Mittel
  • Fortgeschritten
  • 45 min

Voraussetzungen: SQL verstehen und Drift/SQLite einordnen

Ein Foto oder PDF besteht aus Bytes. Ein Datenbankeintrag hält meist eine Referenz und Metadaten statt den gesamten Dateiinhalt. Diese Trennung spart unnötige Datenbanklast, erzeugt aber eine Koordinationsaufgabe. Dateien dürfen nicht gelöscht werden, solange Einträge sie verwenden. Wir beginnen mit einem kleinen PDF-Bericht. Die App ergänzt danach private Ablage, Vorschau und Teilen.

01Ein getrenntes Dart-Projekt vorbereiten

Erstelle ein Konsolenprojekt mit dart create -t console pdf_demo. Ersetze pubspec.yaml durch die Beispieldatei und führe dart pub get aus. Sie fixiert den geprüften PDF-, Bild- und Archivpaketstand. Kopiere report.dart nach bin/report.dart. Dieses Beispiel verwendet dart:io und läuft als lokales Konsolenprogramm.

report.dart · dartDatei öffnen
import 'dart:io';
import 'package:pdf/widgets.dart' as pw;

Future<void> main() async {
  final doc = pw.Document();
  doc.addPage(
    pw.Page(
      build: (_) => pw.Column(
        children: [
          pw.Text('Family car'),
          pw.Text('Service'),
          pw.Text('129.90 EUR'),
        ],
      ),
    ),
  );
  await File('report.pdf').writeAsBytes(await doc.save(), flush: true);
  print('report.pdf written');
}

Starten / prüfen

dart run bin/report.dart

02Inhalt von Ausgabe trennen

Document hält den neuen PDF-Bericht. Page enthält das Layout. Text und Column stammen aus dem PDF-Widgetpaket, nicht aus Flutter Material. doc.save liefert die fertigen Bytes. Erst File.writeAsBytes schreibt sie auf die Platte.

03Referenzen verlässlich verwalten

Die App verwendet DocumentRepository und Foto-Repositories als eigene Grenzen. Ein Ablauf importiert eine Datei, prüft Grenzen, speichert Metadaten und ordnet sie einem Entwurf zu. Ein fehlgeschlagener Schreibvorgang darf keine gültige Referenz auf eine verlorene Datei hinterlassen.

04Bericht und Export prüfen

Öffne report.pdf und prüfe den Inhalt. Das Beispiel schreibt nur in seinen aktuellen Arbeitsordner. In der Android-App bleiben Berichte zunächst privat. Der Nutzer entscheidet über Export oder Teilen. Ein geschriebener Bericht allein ist noch kein Beweis für vollständige Anhänge.

Erwartetes Ergebnis

report.pdf enthält Family car, Service und 129.90 EUR.

Deine Übung

Ergänze Datum und Kilometerstand. Prüfe anschließend den PDF-Inhalt mit einem PDF-Textwerkzeug.

Lösung mit Erklärung anzeigen

Füge zwei weitere pw.Text-Widgets hinzu. Mit pdftotext report.pdf - kannst du den Text unabhängig vom Betrachter prüfen. Für Fotos und Seitenlayout sind zusätzlich visuelle oder semantische Prüfungen notwendig.

Projektbezug und Quellen

Das Beispiel ist zum Lernen vereinfacht. Die verlinkte Codeversion zeigt die Anwendung im Projekt und die dortigen Prüfungen.