Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Windows Tipps & SecurityWindows-Update beschädigt wichtige Datenrettungsfunktion(22.09.2026 um 09:04 Uhr)
Sichere ProgrammierungBuilding an Accessible Ecommerce Product Page with WCAG 2.2(22.09.2026 um 03:39 Uhr)
Sichere ProgrammierungGet Your Website Protected in 10 Minutes with SafeLine WAF(22.09.2026 um 08:42 Uhr)
Sichere ProgrammierungIntroduction to SPRINGBOOT(22.09.2026 um 08:42 Uhr)
Windows Tipps & SecurityWindows-Update beschädigt wichtige Datenrettungsfunktion(22.09.2026 um 09:04 Uhr)
Sichere ProgrammierungBuilding an Accessible Ecommerce Product Page with WCAG 2.2(22.09.2026 um 03:39 Uhr)
Sichere ProgrammierungGet Your Website Protected in 10 Minutes with SafeLine WAF(22.09.2026 um 08:42 Uhr)
Sichere ProgrammierungIntroduction to SPRINGBOOT(22.09.2026 um 08:42 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

Making dart:ui_web Compile in Flutter Tests — The Conditional Import Pattern

Making dart:ui_web Compile in Flutter Tests The Problem When embedding YouTube iframes in Flutter Web, you use dart:ui_web and package:web: import 'dart:ui_web' as ui_web; import 'package:web/web.dart' as web; // in…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




Making dart:ui_web Compile in Flutter Tests






The Problem



When embedding YouTube iframes in Flutter Web, you use dart:ui_web and package:web:




import 'dart:ui_web' as ui_web;
import 'package:web/web.dart' as web;

// in initState
ui_web.platformViewRegistry.registerViewFactory(
'youtube-$id',
(int viewId) {
final iframe = web.HTMLIFrameElement()..src = embedUrl;
return iframe;
},
);






Works on Flutter Web. Breaks in tests:




Compilation failed for test/main_test.dart:
lib/pages/philosophy_page.dart:1:8:
Error: Dart library 'dart:ui_web' is not available on this platform.






flutter test defaults to Dart VM, which doesn't have dart:ui_web. Running with --platform chrome fixes it but slows CI significantly.






The Fix: Conditional Export



Three files:




lib/utils/
platform_view.dart ← conditional export switch
platform_view_stub.dart ← Dart VM (no-op)
platform_view_web.dart ← Flutter Web (real impl)









// platform_view.dart
export 'platform_view_stub.dart'
if (dart.library.ui_web) 'platform_view_web.dart';









// platform_view_stub.dart
void registerIframeViewFactory(String viewId, String src) {
// no-op — Dart VM can't render iframes anyway
}









// platform_view_web.dart
import 'dart:ui_web' as ui_web;
import 'package:web/web.dart' as web;

void registerIframeViewFactory(String viewId, String src) {
ui_web.platformViewRegistry.registerViewFactory(
viewId,
(int viewIdInt) {
final iframe = web.HTMLIFrameElement()
..src = src
..allow = 'accelerometer; autoplay; clipboard-write; '
'encrypted-media; gyroscope; picture-in-picture'
..setAttribute('allowfullscreen', 'true')
..style.border = 'none'
..style.width = '100%'
..style.height = '100%';
return iframe;
},
);
}









Usage: Drop the Direct Import






// philosophy_page.dart — before
import 'dart:ui_web' as ui_web;
import 'package:web/web.dart' as web;

// after
import '../utils/platform_view.dart' as platform_view;

// initState — same call site, different impl behind it
for (final v in _videos) {
platform_view.registerIframeViewFactory(
'youtube-${v.id}',
'https://www.youtube.com/embed/${v.id}',
);
}









How the Conditional Export Works



if (dart.library.ui_web) is evaluated at compile time:




  • Dart VM: dart.library.ui_web is absent → platform_view_stub.dart is used

  • Flutter Web: dart.library.ui_web is present → platform_view_web.dart is used



No kIsWeb check needed at runtime. The right file is compiled in.






Result

































Before After
flutter test ❌ dart:ui_web compile error ✅ stub compiles
flutter build web ✅ works ✅ works (real impl)
flutter analyze ✅ 0 errors ✅ 0 errors
CI (Dart VM tests) ❌ 13 tests fail ✅ all pass


The pattern applies to any dart:html/dart:ui_web/package:web usage in pages that are also covered by tests. The dart.library.* condition is the standard Flutter approach for platform-conditional imports.






Building in public: https://my-web-app-b67f4.web.app/






Flutter #FlutterWeb #buildinpublic #testing

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Making dart:ui_web Compile in Flutter Tests — The Conditional Import Pattern

Thematisch verwandte Begriffe: Making, dartuiweb, Compile, Flutter · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-55210 | Joplin is an open source note-taking and to-do application that organise…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick