diff --git a/packages/flutter/lib/src/widgets/platform_view.dart b/packages/flutter/lib/src/widgets/platform_view.dart index 32ce829a7f..722a22b983 100644 --- a/packages/flutter/lib/src/widgets/platform_view.dart +++ b/packages/flutter/lib/src/widgets/platform_view.dart @@ -346,7 +346,7 @@ class HtmlElementView extends StatelessWidget { required this.viewType, this.onPlatformViewCreated, this.creationParams, - }) : assert(kIsWeb, 'HtmlElementView is only available on Flutter Web.'); + }); /// The unique identifier for the HTML view type to be embedded by this widget. /// @@ -363,6 +363,7 @@ class HtmlElementView extends StatelessWidget { @override Widget build(BuildContext context) { + assert(kIsWeb, 'HtmlElementView is only available on Flutter Web.'); return PlatformViewLink( viewType: viewType, onCreatePlatformView: _createHtmlElementView, diff --git a/packages/flutter/test/widgets/platform_view_test.dart b/packages/flutter/test/widgets/platform_view_test.dart index 1016909fea..7b4bc72037 100644 --- a/packages/flutter/test/widgets/platform_view_test.dart +++ b/packages/flutter/test/widgets/platform_view_test.dart @@ -3168,4 +3168,28 @@ void main() { expect(controller.dispatchedPointerEvents, hasLength(1)); expect(controller.dispatchedPointerEvents[0], isA()); }); + + testWidgets('HtmlElementView can be instantiated', (WidgetTester tester) async { + late final Widget htmlElementView; + expect(() { + htmlElementView = const HtmlElementView(viewType: 'webview'); + }, returnsNormally); + + await tester.pumpWidget( + Center( + child: SizedBox( + width: 100, + height: 100, + child: htmlElementView, + ), + ) + ); + await tester.pumpAndSettle(); + + // This file runs on non-web platforms, so we expect `HtmlElementView` to + // fail. + final dynamic exception = tester.takeException(); + expect(exception, isAssertionError); + expect(exception.toString(), contains('HtmlElementView is only available on Flutter Web')); + }); }