diff --git a/.travis.yml b/.travis.yml
index de32a3b..e99f285 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,28 +1,39 @@
 language: dart
 
-# trying to get chrome working
-sudo: true
-
 dart:
-  - dev
-  - 2.7.0
+ - be/raw/latest
 
-dart_task:
-  - test: -p chrome,vm
-
-matrix:
+jobs:
   include:
-    # Only validate formatting using the dev release
-    - dart: dev
-      dart_task: dartfmt
-    - dart: dev
-      dart_task:
-        dartanalizer: --fatal-warnings --fatal-infos .
+    - stage: analyze_and_format
+      name: "Analyze"
+      dart: be/raw/latest
+      os: linux
+      script: dartanalyzer --enable-experiment=non-nullable --fatal-warnings --fatal-infos .
+    - stage: analyze_and_format
+      name: "Format"
+      dart: be/raw/latest
+      os: linux
+      script: dartfmt -n --set-exit-if-changed .
+    - stage: test
+      name: "Vm Tests"
+      dart: be/raw/latest
+      os: linux
+      script: pub run --enable-experiment=non-nullable test -p vm
+    - stage: test
+      name: "Web Tests"
+      dart: be/raw/latest
+      os: linux
+      script: pub run --enable-experiment=non-nullable test -p chrome
+
+stages:
+  - analyze_and_format
+  - test
 
 # Only building master means that we don't run two builds for each pull request.
 branches:
-  only: [master]
+  only: [master, null_safety]
 
 cache:
- directories:
-   - $HOME/.pub-cache
+  directories:
+    - $HOME/.pub-cache
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5bfef35..9b9df6a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.0
+
+* Migrate to null safety.
+
 ## 2.0.0
 
 ### Breaking Changes
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 76c449a..da905ca 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -4,3 +4,5 @@
     implicit-casts: false
   language:
     strict-raw-types: true
+  enable-experiment:
+    - non-nullable
diff --git a/lib/source_map_stack_trace.dart b/lib/source_map_stack_trace.dart
index fd1226a..51b5ec0 100644
--- a/lib/source_map_stack_trace.dart
+++ b/lib/source_map_stack_trace.dart
@@ -19,7 +19,7 @@
 /// [sdkRoot] is the URI surfaced in the stack traces for SDK libraries.
 /// If it's passed, stack frames from the SDK will have `dart:` URLs.
 StackTrace mapStackTrace(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
+    {bool minified = false, Map<String, Uri>? packageMap, Uri? sdkRoot}) {
   if (stackTrace is Chain) {
     return Chain(stackTrace.traces.map((trace) {
       return Trace.from(mapStackTrace(sourceMap, trace,
@@ -31,24 +31,25 @@
 
   var trace = Trace.from(stackTrace);
   return Trace(trace.frames.map((frame) {
+    var line = frame.line;
     // If there's no line information, there's no way to translate this frame.
     // We could return it as-is, but these lines are usually not useful anyways.
-    if (frame.line == null) return null;
+    if (line == null) return null;
 
     // If there's no column, try using the first column of the line.
     var column = frame.column ?? 0;
 
     // Subtract 1 because stack traces use 1-indexed lines and columns and
     // source maps uses 0-indexed.
-    var span = sourceMap.spanFor(frame.line - 1, column - 1,
-        uri: frame.uri?.toString());
+    var span =
+        sourceMap.spanFor(line - 1, column - 1, uri: frame.uri.toString());
 
     // If we can't find a source span, ignore the frame. It's probably something
     // internal that the user doesn't care about.
     if (span == null) return null;
 
     var sourceUrl = span.sourceUrl.toString();
-    if (sdkRoot != null && p.url.isWithin(sdkLib, sourceUrl)) {
+    if (sdkLib != null && p.url.isWithin(sdkLib, sourceUrl)) {
       sourceUrl = 'dart:' + p.url.relative(sourceUrl, from: sdkLib);
     } else if (packageMap != null) {
       for (var package in packageMap.keys) {
@@ -70,8 +71,8 @@
         // use the minified member name.
         minified
             ? (span.isIdentifier ? span.text : frame.member)
-            : _prettifyMember(frame.member));
-  }).where((frame) => frame != null));
+            : _prettifyMember(frame.member!));
+  }).whereType<Frame>());
 }
 
 /// Reformats a JS member name to make it look more Dart-like.
@@ -86,7 +87,7 @@
           RegExp(r'(_+)closure\d*\.call$'),
           // The number of underscores before "closure" indicates how nested it
           // is.
-          (match) => '.<fn>' * match[1].length)
+          (match) => '.<fn>' * match[1]!.length)
       // Get rid of explicitly-generated calls.
       .replaceAll(RegExp(r'\.call$'), '')
       // Get rid of the top-level method prefix.
@@ -99,5 +100,5 @@
       // Convert underscores after identifiers to dots. This runs the risk of
       // incorrectly converting members that contain underscores, but those are
       // contrary to the style guide anyway.
-      .replaceAllMapped(RegExp(r'([a-zA-Z0-9]+)_'), (match) => match[1] + '.');
+      .replaceAllMapped(RegExp(r'([a-zA-Z0-9]+)_'), (match) => match[1]! + '.');
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index ff5e7c7..c9db139 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,17 +1,95 @@
 name: source_map_stack_trace
-version: 2.0.0
+version: 2.1.0-nullsafety
 description: A package for applying source maps to stack traces.
 homepage: https://github.com/dart-lang/source_map_stack_trace
 
 environment:
-  sdk: '>=2.7.0 <3.0.0'
+  sdk: '>=2.9.0-18.0 <2.9.0'
 
 dependencies:
-  path: ^1.0.0
-  stack_trace: ^1.0.0
-  source_maps: ^0.10.2
+  path: '>=1.8.0-nullsafety <1.8.0'
+  stack_trace: '>=1.10.0-nullsafety <1.10.0'
+  source_maps: '>=0.11.0-nullsafety <0.11.0'
 
 dev_dependencies:
   source_span: ^1.6.0
   test: ^1.12.0
   pedantic: ^1.0.0
+
+dependency_overrides:
+  # Overrides required for a version solve
+  coverage: 0.14.0
+  # NNBD Branches
+  async:
+    git:
+      url: git://github.com/dart-lang/async.git
+      ref: null_safety
+  boolean_selector:
+    git:
+      url: git://github.com/dart-lang/boolean_selector.git
+      ref: null_safety
+  charcode:
+    git:
+      url: git://github.com/dart-lang/charcode.git
+      ref: null_safety
+  collection: 1.15.0-nullsafety
+  js:
+    git:
+      url: git://github.com/dart-lang/sdk.git
+      path: pkg/js
+  matcher:
+    git:
+      url: git://github.com/dart-lang/matcher.git
+      ref: null_safety
+  meta: 1.3.0-nullsafety
+  path:
+    git:
+      url: git://github.com/dart-lang/path.git
+      ref: null_safety
+  pedantic:
+    git:
+      url: git://github.com/dart-lang/pedantic.git
+      ref: null_safety
+  pool:
+    git:
+      url: git://github.com/dart-lang/pool.git
+      ref: null_safety
+  source_maps:
+    git:
+      url: git://github.com/dart-lang/source_maps.git
+      ref: null_safety
+  source_span:
+    git:
+      url: git://github.com/dart-lang/source_span.git
+      ref: null_safety
+  stack_trace:
+    git:
+      url: git://github.com/dart-lang/stack_trace.git
+      ref: null_safety
+  stream_channel:
+    git:
+      url: git://github.com/dart-lang/stream_channel.git
+      ref: null_safety
+  string_scanner:
+    git:
+      url: git://github.com/dart-lang/string_scanner.git
+      ref: null_safety
+  term_glyph:
+    git:
+      url: git://github.com/dart-lang/term_glyph.git
+      ref: null_safety
+  test:
+    git:
+      url: git://github.com/dart-lang/test.git
+      ref: null_safety
+      path: pkgs/test
+  test_api:
+    git:
+      url: git://github.com/dart-lang/test.git
+      ref: null_safety
+      path: pkgs/test_api
+  test_core:
+    git:
+      url: git://github.com/dart-lang/test.git
+      ref: null_safety
+      path: pkgs/test_core
diff --git a/test/source_map_stack_trace_test.dart b/test/source_map_stack_trace_test.dart
index 9f13306..ab92897 100644
--- a/test/source_map_stack_trace_test.dart
+++ b/test/source_map_stack_trace_test.dart
@@ -244,7 +244,7 @@
 /// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be
 /// inspected.
 Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
+    {bool minified = false, Map<String, Uri>? packageMap, Uri? sdkRoot}) {
   return Trace.from(mapStackTrace(sourceMap, stackTrace,
       minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
 }
@@ -252,13 +252,13 @@
 /// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be
 /// inspected.
 Chain _mapChain(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
+    {bool minified = false, Map<String, Uri>? packageMap, Uri? sdkRoot}) {
   return Chain.forTrace(mapStackTrace(sourceMap, stackTrace,
       minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
 }
 
 /// Runs the mapper's prettification logic on [member] and returns the result.
-String _prettify(String member) {
+String? _prettify(String member) {
   var trace = Trace([Frame(Uri.parse('foo.dart.js'), 10, 11, member)]);
   return _mapTrace(_simpleMapping, trace).frames.first.member;
 }
