[pointer_interceptor] Migrate to null safety (#286)

diff --git a/README.md b/README.md
index 36b2f0c..8430ac8 100644
--- a/README.md
+++ b/README.md
@@ -38,4 +38,5 @@
 | [multicast_dns](./packages/multicast_dns/) | [![pub package](https://img.shields.io/pub/v/multicast_dns.svg)](https://pub.dev/packages/multicast_dns) |
 | [palette_generator](./packages/palette_generator/) | [![pub package](https://img.shields.io/pub/v/palette_generator.svg)](https://pub.dartlang.org/packages/palette_generator) |
 | [pigeon](./packages/pigeon/) | [![pub package](https://img.shields.io/pub/v/pigeon.svg)](https://pub.dev/packages/pigeon) |
+| [pointer_interceptor](./packages/pointer_interceptor/) | [![pub package](https://img.shields.io/pub/v/pointer_interceptor.svg)](https://pub.dev/packages/pointer_interceptor) |
 | [xdg_directories](./packages/xdg_directories/) | [![pub package](https://img.shields.io/pub/v/xdg_directories.svg)](https://pub.dev/packages/xdg_directories) |
diff --git a/packages/pointer_interceptor/CHANGELOG.md b/packages/pointer_interceptor/CHANGELOG.md
index a11d080..06e0c6e 100644
--- a/packages/pointer_interceptor/CHANGELOG.md
+++ b/packages/pointer_interceptor/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.9.0
+
+* Migrates to null safety.
+
 ## 0.8.0+2
 
 * Use `ElevatedButton` instead of the deprecated `RaisedButton` in example and docs.
diff --git a/packages/pointer_interceptor/example/README.md b/packages/pointer_interceptor/example/README.md
index d4973fd..9fddf8c 100644
--- a/packages/pointer_interceptor/example/README.md
+++ b/packages/pointer_interceptor/example/README.md
@@ -8,7 +8,7 @@
 
 ## Running tests
 
-`flutter drive --target integration_test/widget_test.dart --driver test_driver/integration_test.dart --show-web-server-device -d web-server`
+`flutter drive --target integration_test/widget_test.dart --driver test_driver/integration_test.dart --show-web-server-device -d web-server --web-renderer=html`
 
 The command above will run the integration tests for this package.
 
diff --git a/packages/pointer_interceptor/example/integration_test/widget_test.dart b/packages/pointer_interceptor/example/integration_test/widget_test.dart
index 59ca9a6..72b02ad 100644
--- a/packages/pointer_interceptor/example/integration_test/widget_test.dart
+++ b/packages/pointer_interceptor/example/integration_test/widget_test.dart
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.9
 import 'dart:html' as html;
 
 // Imports the Flutter Driver API.
@@ -27,12 +26,12 @@
       app.main();
       await tester.pumpAndSettle();
 
-      final html.Element element =
+      final html.Element? element =
           _getHtmlElementFromFinder(clickableButtonFinder, tester);
-      expect(element.tagName.toLowerCase(), 'flt-platform-view');
+      expect(element?.tagName.toLowerCase(), 'flt-platform-view');
 
-      final html.Element platformViewRoot =
-          element.shadowRoot.getElementById('background-html-view');
+      final html.Element? platformViewRoot =
+          element?.shadowRoot?.getElementById('background-html-view');
       expect(platformViewRoot, isNull);
     });
 
@@ -42,12 +41,12 @@
       app.main();
       await tester.pumpAndSettle();
 
-      final html.Element element =
+      final html.Element? element =
           _getHtmlElementFromFinder(nonClickableButtonFinder, tester);
-      expect(element.tagName.toLowerCase(), 'flt-platform-view');
+      expect(element?.tagName.toLowerCase(), 'flt-platform-view');
 
-      final html.Element platformViewRoot =
-          element.shadowRoot.getElementById('background-html-view');
+      final html.Element? platformViewRoot =
+          element?.shadowRoot?.getElementById('background-html-view');
       expect(platformViewRoot, isNotNull);
     });
   });
@@ -56,7 +55,7 @@
 // This functions locates a widget from a Finder, and asks the browser what's the
 // DOM element in the center of the coordinates of the widget. (Returns *which*
 // DOM element will handle Mouse interactions first at those coordinates.)
-html.Element _getHtmlElementFromFinder(Finder finder, WidgetTester tester) {
+html.Element? _getHtmlElementFromFinder(Finder finder, WidgetTester tester) {
   final Offset point = tester.getCenter(finder);
   return html.document.elementFromPoint(point.dx.toInt(), point.dy.toInt());
 }
diff --git a/packages/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/example/lib/main.dart
index 4421e79..fd2b539 100644
--- a/packages/pointer_interceptor/example/lib/main.dart
+++ b/packages/pointer_interceptor/example/lib/main.dart
@@ -186,7 +186,7 @@
 /// Initialize the videoPlayer, then render the corresponding view...
 class HtmlElement extends StatelessWidget {
   /// Constructor
-  const HtmlElement({this.onClick});
+  const HtmlElement({required this.onClick});
 
   /// A function to run when the element is clicked
   final Function onClick;
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
index d8456c0..787e349 100644
--- a/packages/pointer_interceptor/example/lib/src/shim/dart_ui_fake.dart
+++ b/packages/pointer_interceptor/example/lib/src/shim/dart_ui_fake.dart
@@ -22,7 +22,7 @@
   /// 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 null;
+    return '';
   }
 }
 
diff --git a/packages/pointer_interceptor/example/pubspec.yaml b/packages/pointer_interceptor/example/pubspec.yaml
index dbb4f7a..2ed4117 100644
--- a/packages/pointer_interceptor/example/pubspec.yaml
+++ b/packages/pointer_interceptor/example/pubspec.yaml
@@ -4,7 +4,8 @@
 version: 1.0.0
 
 environment:
-  sdk: ">=2.7.0 <3.0.0"
+  sdk: ">=2.12.0-0 <3.0.0"
+  flutter: ">=1.26.0-0" # For integration_test from sdk
 
 dependencies:
   flutter:
diff --git a/packages/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/lib/src/mobile.dart
index ef4ef6a..1f561ac 100644
--- a/packages/pointer_interceptor/lib/src/mobile.dart
+++ b/packages/pointer_interceptor/lib/src/mobile.dart
@@ -8,9 +8,9 @@
 class PointerInterceptor extends StatelessWidget {
   /// Create a `PointerInterceptor` wrapping a `child`.
   const PointerInterceptor({
-    @required this.child,
+    required this.child,
     this.debug = false,
-    Key key,
+    Key? key,
   }) : super(key: key);
 
   /// The `Widget` that is being wrapped by this `PointerInterceptor`.
diff --git a/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart b/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart
index d8456c0..787e349 100644
--- a/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart
+++ b/packages/pointer_interceptor/lib/src/shim/dart_ui_fake.dart
@@ -22,7 +22,7 @@
   /// 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 null;
+    return '';
   }
 }
 
diff --git a/packages/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/lib/src/web.dart
index e2e86e8..f59c4a3 100644
--- a/packages/pointer_interceptor/lib/src/web.dart
+++ b/packages/pointer_interceptor/lib/src/web.dart
@@ -40,9 +40,9 @@
 class PointerInterceptor extends StatelessWidget {
   /// Creates a PointerInterceptor for the web.
   PointerInterceptor({
-    @required this.child,
+    required this.child,
     this.debug = false,
-    Key key,
+    Key? key,
   }) : super(key: key) {
     if (!_registered) {
       _register();
diff --git a/packages/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pubspec.yaml
index 5bf127d..5bea65f 100644
--- a/packages/pointer_interceptor/pubspec.yaml
+++ b/packages/pointer_interceptor/pubspec.yaml
@@ -1,10 +1,10 @@
 name: pointer_interceptor
 description: A widget to prevent clicks from being swallowed by underlying HtmlElementViews on the web.
-version: 0.8.0+2
 repository: https://github.com/flutter/packages
+version: 0.9.0
 
 environment:
-  sdk: ">=2.7.0 <3.0.0"
+  sdk: ">=2.12.0-0 <3.0.0"
   flutter: ">=1.17.0"
 
 dependencies: