Transloadits Flutter-SDK-Beta für plattformübergreifende Apps
Im September 2022 begrüßten wir ein Transloadit-SDK für das plattformübergreifende
Entwicklungsframework Flutter. Version 0.2.0 bot Wrapper für Transloadit-API-Operationen und fortsetzbare
Dateiuploads mit dem tus-Protokoll. Wir stellten es als Beta vor, luden Nutzer zum Testen und
Melden von Fehlern ein und betrachteten es nicht als produktionsreif.
Das Paket ist auf pub.dev gelistet.

Sicherheitsupdate, September 2026: Das ursprüngliche Beispiel hinterlegte ein Auth Secret im Flutter-Client. Liefern Sie dieses Auth Secret nicht in einer Mobil-, Desktop- oder Web-App aus und rufen Sie es nicht aus einer Remote-Konfiguration in die App ab. Die ausführbare Anleitung wurde durch den historischen Ablauf und die unten beschriebenen spezifischen Einschränkungen des Pakets ersetzt. Das Auth Secret muss auf einem vertrauenswürdigen Backend bleiben; es in einer App zu verschleiern, hält es nicht geheim.
Installation
Die hier besprochene Version war 0.2.0. Das Paketverzeichnis führt zum Zeitpunkt dieser Aktualisierung
0.2.1 als zuletzt veröffentlichte Version auf; es enthält nicht die Version 1.0.0, die zuvor im
Abhängigkeitsbeispiel dieses Artikels stand. Das veröffentlichte Paket 0.2.1 deklariert die
Dart-SDK-Versionsbeschränkung >=2.12.0 <3.0.0 und eine Abhängigkeit vom Flutter-SDK. Es lässt sich einem Projekt mit
Dart 3 nicht unverändert hinzufügen.
Der Importpfad der Bibliothek lautet package:transloadit/transloadit.dart. Diese Angaben dienen zur Identifizierung des
historischen Pakets; sie sind keine Empfehlung, ein aktuelles Flutter-Projekt auf eine ältere
Version zurückzusetzen. Ziehen Sie die veröffentlichten Paketmetadaten heran,
wenn Sie eine bestehende Integration untersuchen.
Das SDK verwenden
Die veröffentlichte Client-Klasse heißt TransloaditClient, nicht Transloadit wie im ursprünglichen Beispiel.
Der Client bündelt Operationen wie das Erstellen von Assemblies, das Abrufen ihres Status und
das Verwalten von Templates, sodass aufrufender Code nicht jede HTTP-Anfrage manuell aufbauen muss.
Der Konstruktor in der Paketversion 0.2.1 benötigt jedoch authSecret, und seine Implementierung für Anfragen signiert
Parameter lokal. Er bietet keinen öffentlichen Callback für serverseitig erzeugte Signaturen.
Nur das Secret aus dem Konstruktor zu entfernen, einen leeren String zu übergeben oder eine
Backend-URL hinzuzufügen, macht dieses Paket nicht zu einer sicheren Signaturintegration für
mobile Apps. Diese Einschränkung gilt auch für den in der Ankündigung beschriebenen Ablauf mit
0.2.0.
Eine Integration für den Produktivbetrieb benötigt einen anderen Weg für Anfragen: Ihr Backend muss den Nutzer authentifizieren, den Upload autorisieren sowie die Verarbeitungsanweisungen, Ziele, Limits und die Gültigkeitsdauer kontrollieren. Es kann die Assembly selbst erstellen oder freigegebene, kurzzeitig gültige Parameter und eine Signatur für einen Client bereitstellen, der diese unverändert übermitteln kann. Informationen zu diesem Protokoll finden Sie in unserem Leitfaden zu Signature Authentication und in der API zum Erstellen von Assemblies. Dies ist eine architektonische Alternative, keine Funktion dieses Flutter-Pakets.
Eine Assembly erstellen
Die ursprüngliche Anleitung änderte die Größe eines lokalen Bildes auf eine Breite von 400 Pixeln. Ihr Ablauf ist weiterhin hilfreich, um den Aufbau des SDK zu verstehen:
- Rufen Sie die Methode
newAssemblydes Clients auf, umTransloaditAssemblyzu erhalten. Darin werden die Dateien und Steps gesammelt, bevor die Anfrage übermittelt wird. - Fügen Sie das Beispielbild
cat.jpgmitaddFilehinzu. Das veröffentlichte Paket akzeptiertFileund verpackt dessen Pfad für den tus-Client inXFile. - Fügen Sie einen Step namens
resizemit dem Robot/image/resizeund dem Wert 400 fürwidthhinzu. Dies ist die Verarbeitungsanweisung für das Bild, getrennt von der Übertragung seiner Bytes. - Senden Sie die Anfrage mit
createAssemblyab. Das Paket erstellt zuerst die Assembly und verwendet deren tus-Upload-URL zur Dateiübertragung. - Verwenden Sie
onProgressfür den Übertragungsfortschritt undonCompletefür einen abgeschlossenen Dateiupload. In diesem Ablauf ist der Abschluss des Uploads vom Abschluss der Verarbeitung getrennt; ein Upload-Callback allein belegt nicht, dass das Bild in der geänderten Größe bereitsteht. - Lesen Sie die Rückgabe
TransloaditResponsemithilfe vonresponse.data['ok']aus, statt über einen Index auf das Antwortobjekt selbst zuzugreifen.ASSEMBLY_COMPLETEDkennzeichnet eine erfolgreiche Verarbeitung. Das Paket kann auch eine abgebrochene oder vorzeitig beendete Assembly zurückgeben; Fehler müssen gesondert behandelt werden.
Diese API-Details erläutern den Ablauf der Beta, ohne den unsicheren Weg der clientseitigen Signierung als aktuelle Upload-Anleitung darzustellen. Ein Ersatz muss weiterhin zwischen Übertragungsfortschritt und Verarbeitungsergebnissen unterscheiden und zugleich Autorisierung und sensible Zugangsdaten auf dem Backend belassen.
Wie geht es weiter?
Die Ankündigung verwies ursprünglich auf unsere Artikelserie zu einer Rezept-App mit Flutter als umfangreicheres Beispiel. Auch diese historische Anleitung lieferte Zugangsdaten über eine Remote-Konfiguration aus und sollte daher nicht als Anleitung für eine sichere Implementierung dienen. Beginnen Sie beim Entwurf einer neuen Integration mit den oben genannten Referenzen zur Authentifizierung und zu Assemblies.
Die Implementierungshistorie der Beta und den Issue-Tracker finden Sie im Flutter-SDK-Repository. Die Einladung zur Mitarbeit bleibt bestehen: Eine Client-Integration, die autorisierte, serverseitig erzeugte Parameter akzeptiert, müsste eigens implementiert und überprüft werden, bevor wir sie hier empfehlen könnten.
