Start Debugging

flutter-web

7 Beiträge

OpenAI-API aus einer Flutter-Web-App aufrufen, ohne den API-Schlüssel preiszugeben

Alles, was Sie in einen Flutter-Web-Build kompilieren, auch --dart-define-Werte, landet im Klartext im Browser. Das einzige sichere Muster ist ein kleiner Backend-Proxy, der den Schlüssel hält, den Benutzer authentifiziert, das Modell festlegt und die SSE der Responses API zurückstreamt. Vollständiger Dart-shelf-Proxy und Flutter-Client, getestet mit Flutter 3.44, Dart 3.12 und http 1.6.

Fix: Flutter Web liefert nach dem Neuladen des Browser-Tabs einen veralteten Build aus dem Cache

Ein Reload validiert nur index.html neu, daher kommt ein main.dart.js ohne Hash im Dateinamen weiter aus dem Browser-Cache. Senden Sie Cache-Control: no-cache für die Flutter-Build-Ausgabe, versehen Sie die Dateien mit einer Build-ID, wo Sie keine Header setzen können, und lassen Sie den selbstbereinigenden Service Worker die Caches aus der Zeit vor 3.41 abräumen.

Eine Flutter-Web-App mit WebAssembly kompilieren: flutter build web --wasm

Vollständige Anleitung zum Ausliefern einer nach WebAssembly kompilierten Flutter-Web-App unter Flutter 3.44: wie die beiden erzeugten Builds aussehen, warum Firefox und Safari wegen der wasmAllowList des Loaders weiterhin JavaScript erhalten, die Migration von dart:html zu dart2wasm, die COOP/COEP-Header, die entscheiden, ob skwasm mit mehreren Threads läuft, und wie Sie zur Laufzeit nachweisen, welchen Build der Browser tatsächlich geladen hat.