Bump and fix latest lints, require Dart 3.1 (#60)

diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml
index 836d05c..7636698 100644
--- a/.github/workflows/test-package.yml
+++ b/.github/workflows/test-package.yml
@@ -49,7 +49,7 @@
       matrix:
         # Add macos-latest and/or windows-latest if relevant for this package.
         os: [ubuntu-latest]
-        sdk: [2.17.0, dev]
+        sdk: [3.1, dev]
     steps:
       - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
       - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aad67bf..9f9ada8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,6 @@
-## 2.0.2-dev
+## 2.0.2-wip
+
+* Require Dart 3.1 or later.
 
 ## 2.0.1
 
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 7806fc0..795fd95 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,5 +1,5 @@
 # https://dart.dev/guides/language/analysis-options
-include: package:lints/recommended.yaml
+include: package:dart_flutter_team_lints/analysis_options.yaml
 
 analyzer:
   language:
@@ -9,49 +9,26 @@
 
 linter:
   rules:
-    - always_declare_return_types
     - avoid_bool_literals_in_conditional_expressions
-    - avoid_catching_errors
     - avoid_classes_with_only_static_members
-    - avoid_dynamic_calls
     - avoid_private_typedef_functions
     - avoid_redundant_argument_values
-    - avoid_returning_null
-    - avoid_returning_null_for_future
     - avoid_returning_this
     - avoid_unused_constructor_parameters
     - avoid_void_async
     - cancel_subscriptions
-    - comment_references
-    - directives_ordering
     - join_return_with_assignment
-    - lines_longer_than_80_chars
     - literal_only_boolean_expressions
     - missing_whitespace_between_adjacent_strings
     - no_adjacent_strings_in_list
     - no_runtimeType_toString
-    - omit_local_variable_types
-    - only_throw_errors
     - package_api_docs
-    - prefer_asserts_in_initializer_lists
-    - prefer_const_constructors
     - prefer_const_declarations
     - prefer_expression_function_bodies
     - prefer_final_locals
-    - prefer_relative_imports
-    - prefer_single_quotes
-    - sort_pub_dependencies
-    - test_types_in_equals
-    - throw_in_finally
-    - type_annotate_public_apis
-    - unawaited_futures
     - unnecessary_await_in_return
-    - unnecessary_lambdas
-    - unnecessary_parenthesis
     - unnecessary_raw_strings
-    - unnecessary_statements
     - use_if_null_to_convert_nulls_to_bools
     - use_raw_strings
     - use_string_buffers
-    - use_super_parameters
     - require_trailing_commas
diff --git a/pubspec.yaml b/pubspec.yaml
index 1e01da0..0ef134e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,10 +1,10 @@
 name: test_descriptor
-version: 2.0.2-dev
+version: 2.0.2-wip
 description: An API for defining and verifying files and directory structures.
 repository: https://github.com/dart-lang/test_descriptor
 
 environment:
-  sdk: '>=2.17.0 <3.0.0'
+  sdk: ^3.1.0
 
 dependencies:
   async: ^2.5.0
@@ -14,4 +14,4 @@
   test: ^1.16.0
 
 dev_dependencies:
-  lints: ^2.0.0
+  dart_flutter_team_lints: ^2.0.0
diff --git a/test/directory_test.dart b/test/directory_test.dart
index 3216128..bac6153 100644
--- a/test/directory_test.dart
+++ b/test/directory_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('vm')
+library;
 
 import 'dart:async';
 import 'dart:convert';
diff --git a/test/file_test.dart b/test/file_test.dart
index 4f0137c..26e4b74 100644
--- a/test/file_test.dart
+++ b/test/file_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('vm')
+library;
 
 import 'dart:convert';
 import 'dart:io';
diff --git a/test/nothing_test.dart b/test/nothing_test.dart
index 23d91ff..2663034 100644
--- a/test/nothing_test.dart
+++ b/test/nothing_test.dart
@@ -3,12 +3,12 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('vm')
+library;
 
 import 'dart:io';
 
 import 'package:path/path.dart' as p;
 import 'package:test/test.dart';
-
 import 'package:test_descriptor/test_descriptor.dart' as d;
 
 import 'utils.dart';
diff --git a/test/pattern_test.dart b/test/pattern_test.dart
index 3963fc0..988a66c 100644
--- a/test/pattern_test.dart
+++ b/test/pattern_test.dart
@@ -3,9 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('vm')
+library;
 
 import 'package:test/test.dart';
-
 import 'package:test_descriptor/test_descriptor.dart' as d;
 
 import 'utils.dart';
diff --git a/test/sandbox_test.dart b/test/sandbox_test.dart
index 991bd7f..b0eb32c 100644
--- a/test/sandbox_test.dart
+++ b/test/sandbox_test.dart
@@ -3,12 +3,12 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('vm')
+library;
 
 import 'dart:io';
 
 import 'package:path/path.dart' as p;
 import 'package:test/test.dart';
-
 import 'package:test_descriptor/test_descriptor.dart' as d;
 
 void main() {