merge null safety branch into master (#13)

diff --git a/.travis.yml b/.travis.yml
index 31cbd43..8fd2888 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,23 +1,33 @@
 language: dart
 
 dart:
-  - dev
-  - stable
+- dev
 
-dart_task:
-  - test
-
-matrix:
+jobs:
   include:
-    # Only validate formatting,analyzer using the dev release
-    - dart: dev
-      dart_task: dartfmt
-    - dart: dev
-      dart_task: dartanalyzer
+    - stage: analyze_and_format
+      name: "Analyze test/"
+      dart: dev
+      os: linux
+      script: dartanalyzer --enable-experiment=non-nullable --fatal-warnings --fatal-infos .
+    - stage: analyze_and_format
+      name: "Format"
+      dart: dev
+      os: linux
+      script: dartfmt -n --set-exit-if-changed .
+    - stage: test
+      name: "Vm Tests"
+      dart: dev
+      os: linux
+      script: pub run --enable-experiment=non-nullable test -p vm 
+
+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:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b73fc8..c4926bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.2.0-nullsafety
+
+* Update to null safety. All apis require non-nullable types.
+
 ## 1.1.0
 
 * Add a `GlyphSet` class that can be used to easily choose which set of glyphs
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 108d105..64ff556 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1 +1,4 @@
 include: package:pedantic/analysis_options.yaml
+analyzer:
+  enable-experiment:
+    - non-nullable
diff --git a/pubspec.yaml b/pubspec.yaml
index 06d09d5..ace629c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,14 +1,76 @@
 name: term_glyph
-version: 1.1.1-dev
+version: 1.2.0-nullsafety
 
 description: Useful Unicode glyphs and ASCII substitutes.
 homepage: https://github.com/dart-lang/term_glyph
 
 environment:
-  sdk: '>=1.8.0 <3.0.0'
+  sdk: '>=2.9.0-18.0 <2.9.0'
 
 dev_dependencies:
   csv: '>=3.0.0 <5.0.0'
   dart_style: '>=0.2.0 <2.0.0'
-  meta: '>=0.9.0 <2.0.0'
   test: '>=0.12.0 <2.0.0'
+
+dependency_overrides:
+  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
+  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_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
+  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
+  test:
+    git:
+      url: git://github.com/dart-lang/test.git
+      ref: null_safety
+      path: pkgs/test
diff --git a/tool/generate.dart b/tool/generate.dart
index 6e18536..0a1136e 100644
--- a/tool/generate.dart
+++ b/tool/generate.dart
@@ -5,7 +5,6 @@
 import 'dart:io';
 
 import 'package:csv/csv.dart';
-import 'package:meta/meta.dart';
 
 void main() {
   var csv = CsvCodec(eol: '\n');
@@ -83,7 +82,7 @@
 ///
 /// If [ascii] is `true`, this writes the ASCII glyph set. Otherwise it writes
 /// the Unicode glyph set.
-void _writeGlyphSet(List<List> data, {@required bool ascii}) {
+void _writeGlyphSet(List<List> data, {required bool ascii}) {
   var file =
       File('lib/src/generated/${ascii ? "ascii" : "unicode"}_glyph_set.dart')
           .openSync(mode: FileMode.write);