diff --git a/.travis.yml b/.travis.yml
index 3b6356e..6bb8e4d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
 language: dart
 
 dart:
-  - 2.0.0
+  - 2.1.1
   - dev
 
 dart_task:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb10232..90a48f1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
+## 2.1.2-dev
+
+* Dropping support for Dart 2.0.0 through 2.1.0.
+
 ## 2.1.1
 
-*  Fix for encoding HTML for text string that contains `<pre>` ([#263](https://github.com/dart-lang/markdown/issues/263)).
+* Fix for encoding HTML for text string that contains `<pre>`
+  ([#263](https://github.com/dart-lang/markdown/issues/263)).
 
 ## 2.1.0
 
diff --git a/analysis_options.yaml b/analysis_options.yaml
index f246f8c..5ca0a04 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,5 +1,8 @@
 include: package:pedantic/analysis_options.yaml
 analyzer:
+  language:
+    strict-inference: true
+    strict-raw-types: true
   strong-mode:
     implicit-casts: false
   errors:
@@ -8,27 +11,22 @@
     unused_element: error
     unused_import: error
     unused_local_variable: error
+    # TODO(srawlins): Re-enable this once "unused" parameters are exempted.
+    inference_failure_on_untyped_parameter: ignore
 linter:
   rules:
     #- annotate_overrides
-    - avoid_empty_else
-    - avoid_init_to_null
     - avoid_null_checks_in_equality_operators
-    - avoid_return_types_on_setters
     - await_only_futures
     - camel_case_types
     # https://github.com/dart-lang/linter/issues/574
     #- comment_references
     - control_flow_in_finally
     - directives_ordering
-    - empty_catches
-    - empty_constructor_bodies
     - empty_statements
     - hash_and_equals
     - implementation_imports
     - iterable_contains_unrelated_type
-    - library_names
-    - library_prefixes
     - list_remove_unrelated_type
     - non_constant_identifier_names
     - omit_local_variable_types
@@ -37,14 +35,7 @@
     - package_api_docs
     - prefer_final_fields
     - prefer_generic_function_type_aliases
-    - prefer_is_not_empty
     #- prefer_single_quotes
-    - slash_for_doc_comments
     - test_types_in_equals
     - throw_in_finally
-    - type_init_formals
     - unnecessary_brace_in_string_interps
-    - unnecessary_const
-    - unnecessary_new
-    - unrelated_type_equality_checks
-    - valid_regexps
diff --git a/benchmark/benchmark.dart b/benchmark/benchmark.dart
index b6d480c..3090799 100644
--- a/benchmark/benchmark.dart
+++ b/benchmark/benchmark.dart
@@ -23,7 +23,7 @@
     var start = DateTime.now();
 
     // For a single benchmark, convert the source multiple times.
-    var result;
+    String result;
     for (var j = 0; j < runsPerTrial; j++) {
       result = markdownToHtml(source);
     }
diff --git a/bin/markdown.dart b/bin/markdown.dart
index 951b106..ce6fb82 100644
--- a/bin/markdown.dart
+++ b/bin/markdown.dart
@@ -11,7 +11,7 @@
   'GitHubWeb': ExtensionSet.gitHubWeb,
 };
 
-Future main(List<String> args) async {
+Future<void> main(List<String> args) async {
   var parser = ArgParser()
     ..addFlag('help', negatable: false, help: 'Print help text and exit')
     ..addFlag('version', negatable: false, help: 'Print version and exit')
diff --git a/lib/src/version.dart b/lib/src/version.dart
index 3ace286..7a59bfe 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -1,2 +1,2 @@
 // Generated code. Do not modify.
-const packageVersion = '2.1.1';
+const packageVersion = '2.1.2-dev';
diff --git a/pubspec.yaml b/pubspec.yaml
index 6e4602e..396387a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: markdown
-version: 2.1.1
+version: 2.1.2-dev
 
 description: A library for converting markdown to HTML.
 author: Dart Team <misc@dartlang.org>
@@ -9,7 +9,7 @@
   markdown:
 
 environment:
-  sdk: '>=2.0.0 <3.0.0'
+  sdk: '>=2.1.1 <3.0.0'
 
 dependencies:
   args: ^1.0.0
@@ -25,6 +25,6 @@
   io: ^0.3.2+1
   js: ^0.6.1
   path: ^1.3.1
-  pedantic: ^1.3.0
+  pedantic: ^1.8.0
   test: ^1.2.0
   yaml: ^2.1.8
diff --git a/tool/stats.dart b/tool/stats.dart
index 3581579..55ba001 100644
--- a/tool/stats.dart
+++ b/tool/stats.dart
@@ -13,7 +13,7 @@
 final _configs =
     List<Config>.unmodifiable([Config.commonMarkConfig, Config.gfmConfig]);
 
-Future main(List<String> args) async {
+Future<void> main(List<String> args) async {
   final parser = ArgParser()
     ..addOption('section',
         help: 'Restrict tests to one section, provided after the option.')
@@ -150,7 +150,7 @@
   }
 }
 
-Object _convert(obj) {
+Object _convert(Object obj) {
   if (obj is CompareLevel) {
     switch (obj) {
       case CompareLevel.strict:
@@ -166,7 +166,7 @@
     }
   }
   if (obj is Map) {
-    var map = {};
+    var map = <String, Object>{};
     obj.forEach((k, v) {
       var newKey = k.toString();
       map[newKey] = v;
@@ -176,7 +176,8 @@
   return obj;
 }
 
-Future _printRaw(String testPrefix, Map scores, bool updateFiles) async {
+Future<void> _printRaw(String testPrefix,
+    Map<String, Map<int, CompareLevel>> scores, bool updateFiles) async {
   IOSink sink;
   if (updateFiles) {
     var file = getStatsFile(testPrefix);
@@ -204,7 +205,7 @@
     'of ${total.toString().padLeft(4)} '
     '– ${(100 * value / total).toStringAsFixed(1).padLeft(5)}%  $section';
 
-Future _printFriendly(
+Future<void> _printFriendly(
     String testPrefix,
     SplayTreeMap<String, SplayTreeMap<int, CompareLevel>> scores,
     bool updateFiles) async {
