[web] Use new APIs from `dart:ui_web` (#4168)

The following APIs are now exposed through `dart:ui_web` which eliminates the need for shims:
- `platformViewRegistry`
- `webOnlyAssetManager`
- `urlStrategy`

## Issues

* Fixes https://github.com/flutter/flutter/issues/55000

## Minimal `stable` version

THIS PR CANNOT LAND UNTIL THE NEW `dart:ui_web` APIS MAKE IT INTO A STABLE FLUTTER RELEASE.

* Needs https://github.com/flutter/flutter/commit/5a7ab5a147f6b50ba7dc8c82d3ea0040fc0f081f
diff --git a/packages/camera/camera_web/CHANGELOG.md b/packages/camera/camera_web/CHANGELOG.md
index e3a048b..4cd5c48 100644
--- a/packages/camera/camera_web/CHANGELOG.md
+++ b/packages/camera/camera_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.2+3
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 0.3.2+2
 
 * Adds pub topics to package metadata.
diff --git a/packages/camera/camera_web/lib/src/camera.dart b/packages/camera/camera_web/lib/src/camera.dart
index 79bacad..b256ca2 100644
--- a/packages/camera/camera_web/lib/src/camera.dart
+++ b/packages/camera/camera_web/lib/src/camera.dart
@@ -5,12 +5,12 @@
 import 'dart:async';
 import 'dart:html' as html;
 import 'dart:ui';
+import 'dart:ui_web' as ui_web;
 
 import 'package:camera_platform_interface/camera_platform_interface.dart';
 import 'package:flutter/foundation.dart';
 
 import 'camera_service.dart';
-import 'shims/dart_ui.dart' as ui;
 import 'types/types.dart';
 
 String _getViewType(int cameraId) => 'plugins.flutter.io/camera_$cameraId';
@@ -168,7 +168,7 @@
       ..style.setProperty('object-fit', 'cover')
       ..append(videoElement);
 
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
       _getViewType(textureId),
       (_) => divElement,
     );
diff --git a/packages/camera/camera_web/lib/src/shims/dart_ui.dart b/packages/camera/camera_web/lib/src/shims/dart_ui.dart
deleted file mode 100644
index 3a32721..0000000
--- a/packages/camera/camera_web/lib/src/shims/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(ditman): Remove this file once web-only dart:ui APIs are exposed from
-// a dedicated place. https://github.com/flutter/flutter/issues/55000
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/camera/camera_web/lib/src/shims/dart_ui_fake.dart b/packages/camera/camera_web/lib/src/shims/dart_ui_fake.dart
deleted file mode 100644
index 40d8f19..0000000
--- a/packages/camera/camera_web/lib/src/shims/dart_ui_fake.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:html' as html;
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore_for_file: avoid_classes_with_only_static_members
-// ignore_for_file: camel_case_types
-
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L62
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L72
-  static bool registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory) {
-    return false;
-  }
-}
-
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L12
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) => '';
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/camera/camera_web/lib/src/shims/dart_ui_real.dart b/packages/camera/camera_web/lib/src/shims/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/camera/camera_web/lib/src/shims/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/camera/camera_web/pubspec.yaml b/packages/camera/camera_web/pubspec.yaml
index 4303f6d..f2f8f7c 100644
--- a/packages/camera/camera_web/pubspec.yaml
+++ b/packages/camera/camera_web/pubspec.yaml
@@ -2,11 +2,11 @@
 description: A Flutter plugin for getting information about and controlling the camera on Web.
 repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.3.2+2
+version: 0.3.2+3
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 flutter:
   plugin:
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
index ef4dada..a38da4f 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.5.4+2
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 0.5.4+1
 
 * Adds pub topics to package metadata.
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/google_maps_flutter_web.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/google_maps_flutter_web.dart
index 65448ab..d1ef18d 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/google_maps_flutter_web.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/google_maps_flutter_web.dart
@@ -6,8 +6,9 @@
 
 import 'dart:async';
 import 'dart:convert';
-import 'dart:html';
+import 'dart:html' hide VoidCallback;
 import 'dart:js_util';
+import 'dart:ui_web' as ui_web;
 
 import 'package:collection/collection.dart';
 import 'package:flutter/foundation.dart';
@@ -21,7 +22,6 @@
 import 'package:stream_transform/stream_transform.dart';
 
 import 'src/google_maps_inspector_web.dart';
-import 'src/shims/dart_ui.dart' as ui; // Conditionally imports dart:ui in web
 import 'src/third_party/to_screen_location/to_screen_location.dart';
 import 'src/types.dart';
 
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/circle.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/circle.dart
index 9cd3ba1..0e6df16 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/circle.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/circle.dart
@@ -10,7 +10,7 @@
   CircleController({
     required gmaps.Circle circle,
     bool consumeTapEvents = false,
-    ui.VoidCallback? onTap,
+    VoidCallback? onTap,
   })  : _circle = circle,
         _consumeTapEvents = consumeTapEvents {
     if (onTap != null) {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart
index 01c5f5e..9402760 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart
@@ -262,7 +262,7 @@
     // iconConfig[2] contains the DPIs of the screen, but that information is
     // already encoded in the iconConfig[1]
     icon = gmaps.Icon()
-      ..url = ui.webOnlyAssetManager.getAssetUrl(iconConfig[1]! as String);
+      ..url = ui_web.assetManager.getAssetUrl(iconConfig[1]! as String);
 
     final gmaps.Size? size = _gmSizeFromIconConfig(iconConfig, 3);
     if (size != null) {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart
index fbb1942..03bc739 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart
@@ -41,7 +41,7 @@
       ..style.width = '100%'
       ..style.height = '100%';
 
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
       _getViewType(mapId),
       (int viewId) => _div,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/marker.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/marker.dart
index 50b4bd3..a861e7f 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/marker.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/marker.dart
@@ -14,7 +14,7 @@
     LatLngCallback? onDragStart,
     LatLngCallback? onDrag,
     LatLngCallback? onDragEnd,
-    ui.VoidCallback? onTap,
+    VoidCallback? onTap,
   })  : _marker = marker,
         _infoWindow = infoWindow,
         _consumeTapEvents = consumeTapEvents {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polygon.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polygon.dart
index 719eeee..9f72151 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polygon.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polygon.dart
@@ -10,7 +10,7 @@
   PolygonController({
     required gmaps.Polygon polygon,
     bool consumeTapEvents = false,
-    ui.VoidCallback? onTap,
+    VoidCallback? onTap,
   })  : _polygon = polygon,
         _consumeTapEvents = consumeTapEvents {
     if (onTap != null) {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polyline.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polyline.dart
index 428bb7f..21332e4 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polyline.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/polyline.dart
@@ -10,7 +10,7 @@
   PolylineController({
     required gmaps.Polyline polyline,
     bool consumeTapEvents = false,
-    ui.VoidCallback? onTap,
+    VoidCallback? onTap,
   })  : _polyline = polyline,
         _consumeTapEvents = consumeTapEvents {
     if (onTap != null) {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui.dart
deleted file mode 100644
index 2b254a9..0000000
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(ditman): Remove this file once web-only dart:ui APIs, https://github.com/flutter/flutter/issues/55000
-// are exposed from a dedicated place.
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui_fake.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui_fake.dart
deleted file mode 100644
index 40d8f19..0000000
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui_fake.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:html' as html;
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore_for_file: avoid_classes_with_only_static_members
-// ignore_for_file: camel_case_types
-
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L62
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L72
-  static bool registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory) {
-    return false;
-  }
-}
-
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L12
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) => '';
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui_real.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/shims/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
index 357449b..4d10106 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
@@ -2,11 +2,11 @@
 description: Web platform implementation of google_maps_flutter
 repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
-version: 0.5.4+1
+version: 0.5.4+2
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 flutter:
   plugin:
diff --git a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
index 34e5ad5..0a6f725 100644
--- a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.12.0+5
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 0.12.0+4
 
 * Adds pub topics to package metadata.
diff --git a/packages/google_sign_in/google_sign_in_web/example/integration_test/flexible_size_html_element_view_test.dart b/packages/google_sign_in/google_sign_in_web/example/integration_test/flexible_size_html_element_view_test.dart
index b3bf1d5..555b171 100644
--- a/packages/google_sign_in/google_sign_in_web/example/integration_test/flexible_size_html_element_view_test.dart
+++ b/packages/google_sign_in/google_sign_in_web/example/integration_test/flexible_size_html_element_view_test.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:ui' as ui;
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
@@ -157,8 +157,7 @@
     this.initialSize,
     super.key,
   }) {
-    // ignore: avoid_dynamic_calls, undefined_prefixed_name
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
       'resizable_from_js_$instanceId',
       (int viewId) {
         final DomHtmlElement element = document.createElement('div');
diff --git a/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml
index 6a1076b..61a2f47 100644
--- a/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml
@@ -2,8 +2,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 dependencies:
   cupertino_icons: ^1.0.2
diff --git a/packages/google_sign_in/google_sign_in_web/lib/google_sign_in_web.dart b/packages/google_sign_in/google_sign_in_web/lib/google_sign_in_web.dart
index a8c1d5c..cee94d3 100644
--- a/packages/google_sign_in/google_sign_in_web/lib/google_sign_in_web.dart
+++ b/packages/google_sign_in/google_sign_in_web/lib/google_sign_in_web.dart
@@ -4,7 +4,7 @@
 
 import 'dart:async';
 import 'dart:html' as html;
-import 'dart:ui' as ui;
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/foundation.dart' show visibleForTesting, kDebugMode;
 import 'package:flutter/material.dart';
@@ -172,8 +172,7 @@
 
   // Register a factory for the Button HtmlElementView.
   void _registerButtonFactory() {
-    // ignore: avoid_dynamic_calls, undefined_prefixed_name
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
       'gsi_login_button',
       (int viewId) {
         final DomElement element = createDomElement('div');
diff --git a/packages/google_sign_in/google_sign_in_web/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
index c259f01..c4a3295 100644
--- a/packages/google_sign_in/google_sign_in_web/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
@@ -3,11 +3,11 @@
   for signing in with a Google account on Android, iOS and Web.
 repository: https://github.com/flutter/packages/tree/main/packages/google_sign_in/google_sign_in_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+google_sign_in%22
-version: 0.12.0+4
+version: 0.12.0+5
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 flutter:
   plugin:
diff --git a/packages/pointer_interceptor/CHANGELOG.md b/packages/pointer_interceptor/CHANGELOG.md
index 8a8762a..3a66b06 100644
--- a/packages/pointer_interceptor/CHANGELOG.md
+++ b/packages/pointer_interceptor/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.9.3+6
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 0.9.3+5
 
 * Adds pub topics to package metadata.
diff --git a/packages/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/example/lib/main.dart
index 3fd8453..74f632a 100644
--- a/packages/pointer_interceptor/example/lib/main.dart
+++ b/packages/pointer_interceptor/example/lib/main.dart
@@ -4,12 +4,11 @@
 
 // ignore: avoid_web_libraries_in_flutter
 import 'dart:html' as html;
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/material.dart';
 import 'package:pointer_interceptor/pointer_interceptor.dart';
 
-import 'src/shim/dart_ui.dart' as ui;
-
 const String _htmlElementViewType = '_htmlElementViewType';
 const double _videoWidth = 640;
 const double _videoHeight = 480;
@@ -42,7 +41,7 @@
 //       ..style.border = 'none';
 
 void main() {
-  ui.platformViewRegistry.registerViewFactory(
+  ui_web.platformViewRegistry.registerViewFactory(
     _htmlElementViewType,
     (int viewId) => htmlElement,
   );
diff --git a/packages/pointer_interceptor/example/lib/src/shim/dart_ui.dart b/packages/pointer_interceptor/example/lib/src/shim/dart_ui.dart
deleted file mode 100644
index 4ac3e6d..0000000
--- a/packages/pointer_interceptor/example/lib/src/shim/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(dit): flutter/flutter#55000 Remove this file once web-only dart:ui APIs
-// are exposed from a dedicated place.
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/pointer_interceptor/example/lib/src/shim/dart_ui_fake.dart b/packages/pointer_interceptor/example/lib/src/shim/dart_ui_fake.dart
deleted file mode 100644
index 65cd719..0000000
--- a/packages/pointer_interceptor/example/lib/src/shim/dart_ui_fake.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore: avoid_classes_with_only_static_members
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L62
-// ignore: camel_case_types
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L72
-  static void registerViewFactory(
-      String viewTypeId, dynamic Function(int viewId) viewFactory) {}
-}
-
-// ignore: avoid_classes_with_only_static_members
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/assets.dart#L12
-// ignore: camel_case_types
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) {
-    return '';
-  }
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/pointer_interceptor/example/lib/src/shim/dart_ui_real.dart b/packages/pointer_interceptor/example/lib/src/shim/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/pointer_interceptor/example/lib/src/shim/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/pointer_interceptor/example/pubspec.yaml b/packages/pointer_interceptor/example/pubspec.yaml
index 02b212c..9f8b29e 100644
--- a/packages/pointer_interceptor/example/pubspec.yaml
+++ b/packages/pointer_interceptor/example/pubspec.yaml
@@ -4,8 +4,8 @@
 version: 1.0.0
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 dependencies:
   flutter:
diff --git a/packages/pointer_interceptor/lib/src/shim/dart_ui.dart b/packages/pointer_interceptor/lib/src/shim/dart_ui.dart
deleted file mode 100644
index 4ac3e6d..0000000
--- a/packages/pointer_interceptor/lib/src/shim/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(dit): flutter/flutter#55000 Remove this file once web-only dart:ui APIs
-// are exposed from a dedicated place.
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart b/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart
deleted file mode 100644
index f310a46..0000000
--- a/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore: avoid_classes_with_only_static_members
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L62
-// ignore: camel_case_types
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L72
-  static void registerViewFactory(
-      String viewTypeId, dynamic Function(int viewId) viewFactory,
-      {bool isVisible = true}) {}
-}
-
-// ignore: avoid_classes_with_only_static_members
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/assets.dart#L12
-// ignore: camel_case_types
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) {
-    return '';
-  }
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/pointer_interceptor/lib/src/shim/dart_ui_real.dart b/packages/pointer_interceptor/lib/src/shim/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/pointer_interceptor/lib/src/shim/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/lib/src/web.dart
index 50edc41..e0dbcf9 100644
--- a/packages/pointer_interceptor/lib/src/web.dart
+++ b/packages/pointer_interceptor/lib/src/web.dart
@@ -4,11 +4,10 @@
 
 // ignore: avoid_web_libraries_in_flutter
 import 'dart:html' as html;
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/widgets.dart';
 
-import 'shim/dart_ui.dart' as ui;
-
 const String _viewType = '__webPointerInterceptorViewType__';
 const String _debug = 'debug__';
 
@@ -20,7 +19,7 @@
 // Registers a viewFactory for this widget.
 void _registerFactory({bool debug = false}) {
   final String viewType = _getViewType(debug: debug);
-  ui.platformViewRegistry.registerViewFactory(viewType, (int viewId) {
+  ui_web.platformViewRegistry.registerViewFactory(viewType, (int viewId) {
     final html.Element htmlElement = html.DivElement()
       ..style.width = '100%'
       ..style.height = '100%';
diff --git a/packages/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pubspec.yaml
index d4048b8..3dba03b 100644
--- a/packages/pointer_interceptor/pubspec.yaml
+++ b/packages/pointer_interceptor/pubspec.yaml
@@ -2,11 +2,11 @@
 description: A widget to prevent clicks from being swallowed by underlying HtmlElementViews on the web.
 repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+pointer_interceptor%22
-version: 0.9.3+5
+version: 0.9.3+6
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 dependencies:
   flutter:
diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md
index 336137f..4fd4abb 100644
--- a/packages/url_launcher/url_launcher_web/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.0.20
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 2.0.19
 
 * Adds pub topics to package metadata.
diff --git a/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart b/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
index 6ad19a4..3c27d1c 100644
--- a/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
+++ b/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
@@ -4,10 +4,10 @@
 
 import 'dart:html' as html;
 import 'dart:js_util';
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
-import 'package:flutter_web_plugins/flutter_web_plugins.dart';
 import 'package:integration_test/integration_test.dart';
 import 'package:url_launcher_platform_interface/link.dart';
 import 'package:url_launcher_web/src/link.dart';
@@ -69,7 +69,7 @@
       // Check that internal route properly prepares using the default
       // [UrlStrategy]
       expect(anchor.getAttribute('href'),
-          urlStrategy?.prepareExternalUrl(uri3.toString()));
+          ui_web.urlStrategy?.prepareExternalUrl(uri3.toString()));
       expect(anchor.getAttribute('target'), '_self');
 
       // Needed when testing on on Chrome98 headless in CI.
diff --git a/packages/url_launcher/url_launcher_web/example/pubspec.yaml b/packages/url_launcher/url_launcher_web/example/pubspec.yaml
index ea3f199..9915164 100644
--- a/packages/url_launcher/url_launcher_web/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/example/pubspec.yaml
@@ -2,8 +2,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 dependencies:
   flutter:
@@ -13,8 +13,6 @@
   build_runner: ^2.1.1
   flutter_test:
     sdk: flutter
-  flutter_web_plugins:
-    sdk: flutter
   integration_test:
     sdk: flutter
   mockito: 5.4.1
diff --git a/packages/url_launcher/url_launcher_web/lib/src/link.dart b/packages/url_launcher/url_launcher_web/lib/src/link.dart
index ecb595c..b1589ba 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/link.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/link.dart
@@ -5,13 +5,13 @@
 import 'dart:async';
 import 'dart:html' as html;
 import 'dart:js_util';
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/foundation.dart';
 import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_web_plugins/flutter_web_plugins.dart' show urlStrategy;
 import 'package:url_launcher_platform_interface/link.dart';
 
 /// The unique identifier for the view type to be used for link platform views.
@@ -225,7 +225,7 @@
       // in case an internal uri is given, the url mus be properly encoded
       // using the currently used [UrlStrategy]
       if (!uri.hasScheme) {
-        href = urlStrategy?.prepareExternalUrl(href) ?? href;
+        href = ui_web.urlStrategy?.prepareExternalUrl(href) ?? href;
       }
       _element.setAttribute('href', href);
     }
diff --git a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart
deleted file mode 100644
index 0f6cd89..0000000
--- a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(ditman): Remove this file once web-only dart:ui APIs
-// are exposed from a dedicated place, flutter/flutter#55000.
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart
deleted file mode 100644
index ec46f27..0000000
--- a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:html' as html;
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore_for_file: avoid_classes_with_only_static_members
-// ignore_for_file: camel_case_types
-
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L62
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L72
-  static bool registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory,
-      {bool isVisible = true}) {
-    return false;
-  }
-}
-
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L12
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) => '';
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_real.dart b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart b/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
index d296651..be40539 100644
--- a/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
+++ b/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
@@ -4,14 +4,14 @@
 
 import 'dart:async';
 import 'dart:html' as html;
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/foundation.dart' show visibleForTesting;
-import 'package:flutter_web_plugins/flutter_web_plugins.dart';
+import 'package:flutter_web_plugins/flutter_web_plugins.dart' show Registrar;
 import 'package:url_launcher_platform_interface/link.dart';
 import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
 
 import 'src/link.dart';
-import 'src/shims/dart_ui.dart' as ui;
 
 const Set<String> _safariTargetTopSchemes = <String>{
   'mailto',
@@ -49,7 +49,7 @@
   /// Registers this class as the default instance of [UrlLauncherPlatform].
   static void registerWith(Registrar registrar) {
     UrlLauncherPlatform.instance = UrlLauncherPlugin();
-    ui.platformViewRegistry
+    ui_web.platformViewRegistry
         .registerViewFactory(linkViewType, linkViewFactory, isVisible: false);
   }
 
diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml
index 2f22f2c..fce7da4 100644
--- a/packages/url_launcher/url_launcher_web/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/pubspec.yaml
@@ -2,11 +2,11 @@
 description: Web platform implementation of url_launcher
 repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 2.0.19
+version: 2.0.20
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 flutter:
   plugin:
diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md
index e67ee61..58e6f64 100644
--- a/packages/video_player/video_player_web/CHANGELOG.md
+++ b/packages/video_player/video_player_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.0.18
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 2.0.17
 
 * Adds pub topics to package metadata.
diff --git a/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart b/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart
deleted file mode 100644
index bd28793..0000000
--- a/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(ditman): Remove this file once web-only dart:ui APIs are exposed from
-// a dedicated place, https://github.com/flutter/flutter/issues/55000
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart b/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart
deleted file mode 100644
index 40d8f19..0000000
--- a/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:html' as html;
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore_for_file: avoid_classes_with_only_static_members
-// ignore_for_file: camel_case_types
-
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L62
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L72
-  static bool registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory) {
-    return false;
-  }
-}
-
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L12
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) => '';
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/video_player/video_player_web/lib/src/shims/dart_ui_real.dart b/packages/video_player/video_player_web/lib/src/shims/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/video_player/video_player_web/lib/src/shims/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart
index e52fd83..caa585b 100644
--- a/packages/video_player/video_player_web/lib/video_player_web.dart
+++ b/packages/video_player/video_player_web/lib/video_player_web.dart
@@ -4,12 +4,12 @@
 
 import 'dart:async';
 import 'dart:html';
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/material.dart';
 import 'package:flutter_web_plugins/flutter_web_plugins.dart';
 import 'package:video_player_platform_interface/video_player_platform_interface.dart';
 
-import 'src/shims/dart_ui.dart' as ui;
 import 'src/video_player.dart';
 
 /// The web implementation of [VideoPlayerPlatform].
@@ -62,7 +62,7 @@
         if (dataSource.package != null && dataSource.package!.isNotEmpty) {
           assetUrl = 'packages/${dataSource.package}/$assetUrl';
         }
-        assetUrl = ui.webOnlyAssetManager.getAssetUrl(assetUrl);
+        assetUrl = ui_web.assetManager.getAssetUrl(assetUrl);
         uri = assetUrl;
         break;
       case DataSourceType.file:
@@ -81,7 +81,7 @@
       ..style.width = '100%';
 
     // TODO(hterkelsen): Use initialization parameters once they are available
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
         'videoPlayer-$textureId', (int viewId) => videoElement);
 
     final VideoPlayer player = VideoPlayer(videoElement: videoElement)
diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml
index 3924364..c0afc05 100644
--- a/packages/video_player/video_player_web/pubspec.yaml
+++ b/packages/video_player/video_player_web/pubspec.yaml
@@ -2,11 +2,11 @@
 description: Web platform implementation of video_player.
 repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.0.17
+version: 2.0.18
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 flutter:
   plugin:
diff --git a/packages/webview_flutter/webview_flutter_web/CHANGELOG.md b/packages/webview_flutter/webview_flutter_web/CHANGELOG.md
index a7c6924..cf5d2d6 100644
--- a/packages/webview_flutter/webview_flutter_web/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.2.2+3
+
+* Migrates to `dart:ui_web` APIs.
+* Updates minimum supported SDK version to Flutter 3.13.0/Dart 3.1.0.
+
 ## 0.2.2+2
 
 * Adds pub topics to package metadata.
diff --git a/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui.dart b/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui.dart
deleted file mode 100644
index 1724dd6..0000000
--- a/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/// This file shims dart:ui in web-only scenarios, getting rid of the need to
-/// suppress analyzer warnings.
-
-// TODO(BeMacized): Remove this file once web-only dart:ui APIs,
-// are exposed from a dedicated place. flutter/flutter#55000
-export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui_fake.dart b/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui_fake.dart
deleted file mode 100644
index 40d8f19..0000000
--- a/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui_fake.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:html' as html;
-
-// Fake interface for the logic that this package needs from (web-only) dart:ui.
-// This is conditionally exported so the analyzer sees these methods as available.
-
-// ignore_for_file: avoid_classes_with_only_static_members
-// ignore_for_file: camel_case_types
-
-/// Shim for web_ui engine.PlatformViewRegistry
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L62
-class platformViewRegistry {
-  /// Shim for registerViewFactory
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/ui.dart#L72
-  static bool registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory) {
-    return false;
-  }
-}
-
-/// Shim for web_ui engine.AssetManager.
-/// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L12
-class webOnlyAssetManager {
-  /// Shim for getAssetUrl.
-  /// https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/assets.dart#L45
-  static String getAssetUrl(String asset) => '';
-}
-
-/// Signature of callbacks that have no arguments and return no data.
-typedef VoidCallback = void Function();
diff --git a/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui_real.dart b/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui_real.dart
deleted file mode 100644
index 276b768..0000000
--- a/packages/webview_flutter/webview_flutter_web/lib/src/shims/dart_ui_real.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-export 'dart:ui';
diff --git a/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_controller.dart b/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_controller.dart
index daf1861..79f28b8 100644
--- a/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_controller.dart
+++ b/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_controller.dart
@@ -4,13 +4,13 @@
 
 import 'dart:convert';
 import 'dart:html' as html;
+import 'dart:ui_web' as ui_web;
 
 import 'package:flutter/cupertino.dart';
 import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
 
 import 'content_type.dart';
 import 'http_request_factory.dart';
-import 'shims/dart_ui.dart' as ui;
 
 /// An implementation of [PlatformWebViewControllerCreationParams] using Flutter
 /// for Web API.
@@ -115,7 +115,7 @@
       : super.implementation(params) {
     final WebWebViewController controller =
         params.controller as WebWebViewController;
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
       controller._webWebViewParams.iFrame.id,
       (int viewId) => controller._webWebViewParams.iFrame,
     );
diff --git a/packages/webview_flutter/webview_flutter_web/lib/src/webview_flutter_web_legacy.dart b/packages/webview_flutter/webview_flutter_web/lib/src/webview_flutter_web_legacy.dart
index ebf3c79..1f83bf4 100644
--- a/packages/webview_flutter/webview_flutter_web/lib/src/webview_flutter_web_legacy.dart
+++ b/packages/webview_flutter/webview_flutter_web/lib/src/webview_flutter_web_legacy.dart
@@ -5,6 +5,8 @@
 import 'dart:async';
 import 'dart:convert';
 import 'dart:html';
+import 'dart:ui_web' as ui_web;
+
 import 'package:flutter/foundation.dart';
 import 'package:flutter/gestures.dart';
 import 'package:flutter/widgets.dart';
@@ -12,7 +14,6 @@
 // ignore: implementation_imports
 import 'package:webview_flutter_platform_interface/src/webview_flutter_platform_interface_legacy.dart';
 import 'http_request_factory.dart';
-import 'shims/dart_ui.dart' as ui;
 
 /// Builds an iframe based WebView.
 ///
@@ -20,7 +21,7 @@
 class WebWebViewPlatform implements WebViewPlatform {
   /// Constructs a new instance of [WebWebViewPlatform].
   WebWebViewPlatform() {
-    ui.platformViewRegistry.registerViewFactory(
+    ui_web.platformViewRegistry.registerViewFactory(
         'webview-iframe',
         (int viewId) => IFrameElement()
           ..id = 'webview-$viewId'
diff --git a/packages/webview_flutter/webview_flutter_web/pubspec.yaml b/packages/webview_flutter/webview_flutter_web/pubspec.yaml
index 2ec1e0b..ed646b4 100644
--- a/packages/webview_flutter/webview_flutter_web/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_web/pubspec.yaml
@@ -2,11 +2,11 @@
 description: A Flutter plugin that provides a WebView widget on web.
 repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22
-version: 0.2.2+2
+version: 0.2.2+3
 
 environment:
-  sdk: ">=2.19.0 <4.0.0"
-  flutter: ">=3.7.0"
+  sdk: ">=3.1.0 <4.0.0"
+  flutter: ">=3.13.0"
 
 flutter:
   plugin: