diff --git a/packages/url_launcher/analysis_options.yaml b/packages/url_launcher/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/url_launcher/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md
index 46b71f6..2290fd0 100644
--- a/packages/url_launcher/url_launcher/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 6.0.17
+
+* Updates code for new analysis options.
+
 ## 6.0.16
 
 * Moves Android and iOS implementations to federated packages.
diff --git a/packages/url_launcher/url_launcher/example/lib/main.dart b/packages/url_launcher/url_launcher/example/lib/main.dart
index 7e4d18a..a5e38ce 100644
--- a/packages/url_launcher/url_launcher/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher/example/lib/main.dart
@@ -22,13 +22,13 @@
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
-      home: MyHomePage(title: 'URL Launcher'),
+      home: const MyHomePage(title: 'URL Launcher'),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
+  const MyHomePage({Key? key, required this.title}) : super(key: key);
   final String title;
 
   @override
@@ -213,11 +213,11 @@
                 uri: Uri.parse(
                     'https://pub.dev/documentation/url_launcher/latest/link/link-library.html'),
                 target: LinkTarget.blank,
-                builder: (ctx, openLink) {
+                builder: (BuildContext ctx, FollowLink? openLink) {
                   return TextButton.icon(
                     onPressed: openLink,
-                    label: Text('Link Widget documentation'),
-                    icon: Icon(Icons.read_more),
+                    label: const Text('Link Widget documentation'),
+                    icon: const Icon(Icons.read_more),
                   );
                 },
               ),
diff --git a/packages/url_launcher/url_launcher/example/pubspec.yaml b/packages/url_launcher/url_launcher/example/pubspec.yaml
index db1d548..3b2bba9 100644
--- a/packages/url_launcher/url_launcher/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/example/pubspec.yaml
@@ -18,11 +18,10 @@
     path: ../
 
 dev_dependencies:
-  integration_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
-  pedantic: ^1.10.0
+  integration_test:
+    sdk: flutter
   mockito: ^5.0.0
   plugin_platform_interface: ^2.0.0
 
diff --git a/packages/url_launcher/url_launcher/lib/link.dart b/packages/url_launcher/url_launcher/lib/link.dart
index 12a213b..00947cd 100644
--- a/packages/url_launcher/url_launcher/lib/link.dart
+++ b/packages/url_launcher/url_launcher/lib/link.dart
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-export 'src/link.dart' show Link;
 export 'package:url_launcher_platform_interface/link.dart'
     show FollowLink, LinkTarget, LinkWidgetBuilder;
+
+export 'src/link.dart' show Link;
diff --git a/packages/url_launcher/url_launcher/lib/src/link.dart b/packages/url_launcher/url_launcher/lib/src/link.dart
index 72d6e24..67aa244 100644
--- a/packages/url_launcher/url_launcher/lib/src/link.dart
+++ b/packages/url_launcher/url_launcher/lib/src/link.dart
@@ -43,27 +43,31 @@
 /// );
 /// ```
 class Link extends StatelessWidget implements LinkInfo {
-  /// Called at build time to construct the widget tree under the link.
-  final LinkWidgetBuilder builder;
-
-  /// The destination that this link leads to.
-  final Uri? uri;
-
-  /// The target indicating where to open the link.
-  final LinkTarget target;
-
-  /// Whether the link is disabled or not.
-  bool get isDisabled => uri == null;
-
   /// Creates a widget that renders a real link on the web, and uses WebViews in
   /// native platforms to open links.
-  Link({
+  const Link({
     Key? key,
     required this.uri,
     this.target = LinkTarget.defaultTarget,
     required this.builder,
   }) : super(key: key);
 
+  /// Called at build time to construct the widget tree under the link.
+  @override
+  final LinkWidgetBuilder builder;
+
+  /// The destination that this link leads to.
+  @override
+  final Uri? uri;
+
+  /// The target indicating where to open the link.
+  @override
+  final LinkTarget target;
+
+  /// Whether the link is disabled or not.
+  @override
+  bool get isDisabled => uri == null;
+
   LinkDelegate get _effectiveDelegate {
     return UrlLauncherPlatform.instance.linkDelegate ??
         DefaultLinkDelegate.create;
@@ -94,8 +98,12 @@
   final LinkInfo link;
 
   bool get _useWebView {
-    if (link.target == LinkTarget.self) return true;
-    if (link.target == LinkTarget.blank) return false;
+    if (link.target == LinkTarget.self) {
+      return true;
+    }
+    if (link.target == LinkTarget.blank) {
+      return false;
+    }
     return false;
   }
 
diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml
index 5844031..4ccf48b 100644
--- a/packages/url_launcher/url_launcher/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/pubspec.yaml
@@ -3,7 +3,7 @@
   web, phone, SMS, and email schemes.
 repository: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 6.0.16
+version: 6.0.17
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
@@ -41,6 +41,5 @@
   flutter_test:
     sdk: flutter
   mockito: ^5.0.0
-  pedantic: ^1.10.0
   plugin_platform_interface: ^2.0.0
   test: ^1.16.3
diff --git a/packages/url_launcher/url_launcher/test/link_test.dart b/packages/url_launcher/url_launcher/test/link_test.dart
index 819f6a3..f7a98a0 100644
--- a/packages/url_launcher/url_launcher/test/link_test.dart
+++ b/packages/url_launcher/url_launcher/test/link_test.dart
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/services.dart';
+import 'package:flutter_test/flutter_test.dart';
 import 'package:url_launcher/link.dart';
 import 'package:url_launcher/src/link.dart';
 import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
@@ -118,11 +118,11 @@
       ));
 
       bool frameworkCalled = false;
-      Future<ByteData> Function(Object?, String) originalPushFunction =
+      final Future<ByteData> Function(Object?, String) originalPushFunction =
           pushRouteToFrameworkFunction;
       pushRouteToFrameworkFunction = (Object? _, String __) {
         frameworkCalled = true;
-        return Future.value(ByteData(0));
+        return Future<ByteData>.value(ByteData(0));
       };
 
       await followLink!();
diff --git a/packages/url_launcher/url_launcher/test/url_launcher_test.dart b/packages/url_launcher/url_launcher/test/url_launcher_test.dart
index a038746..4e980cb 100644
--- a/packages/url_launcher/url_launcher/test/url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher/test/url_launcher_test.dart
@@ -5,11 +5,11 @@
 import 'dart:async';
 import 'dart:ui';
 
-import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/foundation.dart';
+import 'package:flutter/services.dart' show PlatformException;
+import 'package:flutter_test/flutter_test.dart';
 import 'package:url_launcher/url_launcher.dart';
 import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
-import 'package:flutter/services.dart' show PlatformException;
 
 import 'mock_url_launcher_platform.dart';
 
@@ -239,7 +239,7 @@
         ..setResponse(true);
 
       final TestWidgetsFlutterBinding binding =
-          _anonymize(TestWidgetsFlutterBinding.ensureInitialized())
+          _anonymize(TestWidgetsFlutterBinding.ensureInitialized())!
               as TestWidgetsFlutterBinding;
       debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
       binding.renderView.automaticSystemUiAdjustment = true;
@@ -268,7 +268,7 @@
         ..setResponse(true);
 
       final TestWidgetsFlutterBinding binding =
-          _anonymize(TestWidgetsFlutterBinding.ensureInitialized())
+          _anonymize(TestWidgetsFlutterBinding.ensureInitialized())!
               as TestWidgetsFlutterBinding;
       debugDefaultTargetPlatformOverride = TargetPlatform.android;
       expect(binding.renderView.automaticSystemUiAdjustment, true);
diff --git a/packages/url_launcher/url_launcher_android/CHANGELOG.md b/packages/url_launcher/url_launcher_android/CHANGELOG.md
index 8b336a0..1b60e86 100644
--- a/packages/url_launcher/url_launcher_android/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for new analysis options.
+
 ## 6.0.13
 
 * Splits from `shared_preferences` as a federated implementation.
diff --git a/packages/url_launcher/url_launcher_android/example/integration_test/url_launcher_test.dart b/packages/url_launcher/url_launcher_android/example/integration_test/url_launcher_test.dart
index ac9f64c..28dc79b 100644
--- a/packages/url_launcher/url_launcher_android/example/integration_test/url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher_android/example/integration_test/url_launcher_test.dart
@@ -10,7 +10,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets('canLaunch', (WidgetTester _) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
 
     expect(await launcher.canLaunch('randomstring'), false);
 
diff --git a/packages/url_launcher/url_launcher_android/example/lib/main.dart b/packages/url_launcher/url_launcher_android/example/lib/main.dart
index 0899232..8721c58 100644
--- a/packages/url_launcher/url_launcher_android/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher_android/example/lib/main.dart
@@ -21,13 +21,13 @@
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
-      home: MyHomePage(title: 'URL Launcher'),
+      home: const MyHomePage(title: 'URL Launcher'),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
+  const MyHomePage({Key? key, required this.title}) : super(key: key);
   final String title;
 
   @override
@@ -39,7 +39,7 @@
   String _phone = '';
 
   Future<void> _launchInBrowser(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -56,7 +56,7 @@
   }
 
   Future<void> _launchInWebViewOrVC(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -73,7 +73,7 @@
   }
 
   Future<void> _launchInWebViewWithJavaScript(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -90,7 +90,7 @@
   }
 
   Future<void> _launchInWebViewWithDomStorage(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -115,7 +115,7 @@
   }
 
   Future<void> _makePhoneCall(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
diff --git a/packages/url_launcher/url_launcher_android/example/pubspec.yaml b/packages/url_launcher/url_launcher_android/example/pubspec.yaml
index db22fd3..9af7b28 100644
--- a/packages/url_launcher/url_launcher_android/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_android/example/pubspec.yaml
@@ -18,11 +18,10 @@
     path: ../
 
 dev_dependencies:
-  integration_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
-  pedantic: ^1.10.0
+  integration_test:
+    sdk: flutter
   mockito: ^5.0.0
   plugin_platform_interface: ^2.0.0
 
diff --git a/packages/url_launcher/url_launcher_android/pubspec.yaml b/packages/url_launcher/url_launcher_android/pubspec.yaml
index 0abed02..959e6d0 100644
--- a/packages/url_launcher/url_launcher_android/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_android/pubspec.yaml
@@ -26,6 +26,5 @@
   flutter_test:
     sdk: flutter
   mockito: ^5.0.0
-  pedantic: ^1.10.0
   plugin_platform_interface: ^2.0.0
   test: ^1.16.3
diff --git a/packages/url_launcher/url_launcher_ios/CHANGELOG.md b/packages/url_launcher/url_launcher_ios/CHANGELOG.md
index 931d85e..0f9190d 100644
--- a/packages/url_launcher/url_launcher_ios/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for new analysis options.
+
 ## 6.0.13
 
 * Splits from `url_launcher` as a federated implementation.
diff --git a/packages/url_launcher/url_launcher_ios/example/integration_test/url_launcher_test.dart b/packages/url_launcher/url_launcher_ios/example/integration_test/url_launcher_test.dart
index f7cec29..b8f1905 100644
--- a/packages/url_launcher/url_launcher_ios/example/integration_test/url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher_ios/example/integration_test/url_launcher_test.dart
@@ -10,7 +10,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets('canLaunch', (WidgetTester _) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
 
     expect(await launcher.canLaunch('randomstring'), false);
 
diff --git a/packages/url_launcher/url_launcher_ios/example/lib/main.dart b/packages/url_launcher/url_launcher_ios/example/lib/main.dart
index a16a4dd..2f73622 100644
--- a/packages/url_launcher/url_launcher_ios/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher_ios/example/lib/main.dart
@@ -21,13 +21,13 @@
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
-      home: MyHomePage(title: 'URL Launcher'),
+      home: const MyHomePage(title: 'URL Launcher'),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
+  const MyHomePage({Key? key, required this.title}) : super(key: key);
   final String title;
 
   @override
@@ -39,7 +39,7 @@
   String _phone = '';
 
   Future<void> _launchInBrowser(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -56,7 +56,7 @@
   }
 
   Future<void> _launchInWebViewOrVC(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -73,7 +73,7 @@
   }
 
   Future<void> _launchInWebViewWithJavaScript(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -90,7 +90,7 @@
   }
 
   Future<void> _launchInWebViewWithDomStorage(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
@@ -107,7 +107,7 @@
   }
 
   Future<void> _launchUniversalLinkIos(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       final bool nativeAppLaunchSucceeded = await launcher.launch(
         url,
@@ -141,7 +141,7 @@
   }
 
   Future<void> _makePhoneCall(String url) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
     if (await launcher.canLaunch(url)) {
       await launcher.launch(
         url,
diff --git a/packages/url_launcher/url_launcher_ios/example/pubspec.yaml b/packages/url_launcher/url_launcher_ios/example/pubspec.yaml
index 2af807d..da4c72c 100644
--- a/packages/url_launcher/url_launcher_ios/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_ios/example/pubspec.yaml
@@ -18,11 +18,10 @@
     path: ../
 
 dev_dependencies:
-  integration_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
-  pedantic: ^1.10.0
+  integration_test:
+    sdk: flutter
   mockito: ^5.0.0
   plugin_platform_interface: ^2.0.0
 
diff --git a/packages/url_launcher/url_launcher_ios/pubspec.yaml b/packages/url_launcher/url_launcher_ios/pubspec.yaml
index dfd4f79..1e1ee87 100644
--- a/packages/url_launcher/url_launcher_ios/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_ios/pubspec.yaml
@@ -25,6 +25,5 @@
   flutter_test:
     sdk: flutter
   mockito: ^5.0.0
-  pedantic: ^1.10.0
   plugin_platform_interface: ^2.0.0
   test: ^1.16.3
diff --git a/packages/url_launcher/url_launcher_linux/CHANGELOG.md b/packages/url_launcher/url_launcher_linux/CHANGELOG.md
index 147d0f3..f47d4fd 100644
--- a/packages/url_launcher/url_launcher_linux/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_linux/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for new analysis options.
+
 ## 2.0.2
 
 * Replaced reference to `shared_preferences` plugin with the `url_launcher` in the README.
diff --git a/packages/url_launcher/url_launcher_linux/example/integration_test/url_launcher_test.dart b/packages/url_launcher/url_launcher_linux/example/integration_test/url_launcher_test.dart
index ae9a914..c9d0d8c 100644
--- a/packages/url_launcher/url_launcher_linux/example/integration_test/url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher_linux/example/integration_test/url_launcher_test.dart
@@ -10,7 +10,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets('canLaunch', (WidgetTester _) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
 
     expect(await launcher.canLaunch('randomstring'), false);
 
diff --git a/packages/url_launcher/url_launcher_linux/example/lib/main.dart b/packages/url_launcher/url_launcher_linux/example/lib/main.dart
index 86e06f3..a9a5d22 100644
--- a/packages/url_launcher/url_launcher_linux/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher_linux/example/lib/main.dart
@@ -20,13 +20,13 @@
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
-      home: MyHomePage(title: 'URL Launcher'),
+      home: const MyHomePage(title: 'URL Launcher'),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
+  const MyHomePage({Key? key, required this.title}) : super(key: key);
   final String title;
 
   @override
diff --git a/packages/url_launcher/url_launcher_linux/example/pubspec.yaml b/packages/url_launcher/url_launcher_linux/example/pubspec.yaml
index b0ef2e6..5e6c3fc 100644
--- a/packages/url_launcher/url_launcher_linux/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_linux/example/pubspec.yaml
@@ -19,11 +19,10 @@
   url_launcher_platform_interface: ^2.0.0
 
 dev_dependencies:
-  integration_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
-  pedantic: ^1.10.0
+  integration_test:
+    sdk: flutter
 
 flutter:
   uses-material-design: true
diff --git a/packages/url_launcher/url_launcher_macos/CHANGELOG.md b/packages/url_launcher/url_launcher_macos/CHANGELOG.md
index 96d2fd4..7b7677a 100644
--- a/packages/url_launcher/url_launcher_macos/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_macos/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for new analysis options.
+
 ## 2.0.2
 
 * Replaced reference to `shared_preferences` plugin with the `url_launcher` in the README.
diff --git a/packages/url_launcher/url_launcher_macos/example/integration_test/url_launcher_test.dart b/packages/url_launcher/url_launcher_macos/example/integration_test/url_launcher_test.dart
index 897b22f..87bc3d2 100644
--- a/packages/url_launcher/url_launcher_macos/example/integration_test/url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher_macos/example/integration_test/url_launcher_test.dart
@@ -10,7 +10,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets('canLaunch', (WidgetTester _) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
 
     expect(await launcher.canLaunch('randomstring'), false);
 
diff --git a/packages/url_launcher/url_launcher_macos/example/lib/main.dart b/packages/url_launcher/url_launcher_macos/example/lib/main.dart
index 86e06f3..a9a5d22 100644
--- a/packages/url_launcher/url_launcher_macos/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher_macos/example/lib/main.dart
@@ -20,13 +20,13 @@
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
-      home: MyHomePage(title: 'URL Launcher'),
+      home: const MyHomePage(title: 'URL Launcher'),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
+  const MyHomePage({Key? key, required this.title}) : super(key: key);
   final String title;
 
   @override
diff --git a/packages/url_launcher/url_launcher_macos/example/pubspec.yaml b/packages/url_launcher/url_launcher_macos/example/pubspec.yaml
index 6d12b75..9bc3062 100644
--- a/packages/url_launcher/url_launcher_macos/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_macos/example/pubspec.yaml
@@ -19,11 +19,10 @@
   url_launcher_platform_interface: ^2.0.0
 
 dev_dependencies:
-  integration_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
-  pedantic: ^1.10.0
+  integration_test:
+    sdk: flutter
 
 flutter:
   uses-material-design: true
diff --git a/packages/url_launcher/url_launcher_macos/pubspec.yaml b/packages/url_launcher/url_launcher_macos/pubspec.yaml
index 5348300..01f1db0 100644
--- a/packages/url_launcher/url_launcher_macos/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_macos/pubspec.yaml
@@ -19,6 +19,3 @@
 dependencies:
   flutter:
     sdk: flutter
-
-dev_dependencies:
-  pedantic: ^1.8.0
diff --git a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md
index fc56473..02e2d0a 100644
--- a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for new analysis options.
+
 ## 2.0.4
 
 * Silenced warnings that may occur during build when using a very
diff --git a/packages/url_launcher/url_launcher_platform_interface/lib/link.dart b/packages/url_launcher/url_launcher_platform_interface/lib/link.dart
index ffff14f..da8aa15 100644
--- a/packages/url_launcher/url_launcher_platform_interface/lib/link.dart
+++ b/packages/url_launcher/url_launcher_platform_interface/lib/link.dart
@@ -22,7 +22,7 @@
 /// Signature for a delegate function to build the [Link] widget.
 typedef LinkDelegate = Widget Function(LinkInfo linkWidget);
 
-final MethodCodec _codec = const JSONMethodCodec();
+const MethodCodec _codec = JSONMethodCodec();
 
 /// Defines where a Link URL should be open.
 ///
@@ -42,20 +42,21 @@
   ///
   /// iOS, on the other hand, defaults to [self] for web URLs, and [blank] for
   /// non-web URLs.
-  static const defaultTarget = LinkTarget._(debugLabel: 'defaultTarget');
+  static const LinkTarget defaultTarget =
+      LinkTarget._(debugLabel: 'defaultTarget');
 
   /// On the web, this opens the link in the same tab where the flutter app is
   /// running.
   ///
   /// On Android and iOS, this opens the link in a webview within the app.
-  static const self = LinkTarget._(debugLabel: 'self');
+  static const LinkTarget self = LinkTarget._(debugLabel: 'self');
 
   /// On the web, this opens the link in a new tab or window (depending on the
   /// browser and user configuration).
   ///
   /// On Android and iOS, this opens the link in the browser or the relevant
   /// app.
-  static const blank = LinkTarget._(debugLabel: 'blank');
+  static const LinkTarget blank = LinkTarget._(debugLabel: 'blank');
 }
 
 /// Encapsulates all the information necessary to build a Link widget.
diff --git a/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart b/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart
index e75e283..df73804 100644
--- a/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart
+++ b/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart
@@ -21,7 +21,7 @@
     return _channel.invokeMethod<bool>(
       'canLaunch',
       <String, Object>{'url': url},
-    ).then((value) => value ?? false);
+    ).then((bool? value) => value ?? false);
   }
 
   @override
@@ -51,6 +51,6 @@
         'universalLinksOnly': universalLinksOnly,
         'headers': headers,
       },
-    ).then((value) => value ?? false);
+    ).then((bool? value) => value ?? false);
   }
 }
diff --git a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml
index 074e95b..de1e71f 100644
--- a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml
@@ -19,4 +19,3 @@
   flutter_test:
     sdk: flutter
   mockito: ^5.0.0
-  pedantic: ^1.10.0
diff --git a/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart b/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart
index 75a14b2..a6b316d 100644
--- a/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart
+++ b/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart
@@ -13,20 +13,20 @@
 void main() {
   testWidgets('Link with Navigator', (WidgetTester tester) async {
     await tester.pumpWidget(MaterialApp(
-      home: Placeholder(key: Key('home')),
+      home: const Placeholder(key: Key('home')),
       routes: <String, WidgetBuilder>{
-        '/a': (BuildContext context) => Placeholder(key: Key('a')),
+        '/a': (BuildContext context) => const Placeholder(key: Key('a')),
       },
     ));
-    expect(find.byKey(Key('home')), findsOneWidget);
-    expect(find.byKey(Key('a')), findsNothing);
+    expect(find.byKey(const Key('home')), findsOneWidget);
+    expect(find.byKey(const Key('a')), findsNothing);
     await tester.runAsync(() => pushRouteNameToFramework(null, '/a'));
     // start animation
     await tester.pump();
     // skip past animation (5s is arbitrary, just needs to be long enough)
     await tester.pump(const Duration(seconds: 5));
-    expect(find.byKey(Key('a')), findsOneWidget);
-    expect(find.byKey(Key('home')), findsNothing);
+    expect(find.byKey(const Key('a')), findsOneWidget);
+    expect(find.byKey(const Key('home')), findsNothing);
   });
 
   testWidgets('Link with Navigator', (WidgetTester tester) async {
@@ -34,15 +34,15 @@
       routeInformationParser: _RouteInformationParser(),
       routerDelegate: _RouteDelegate(),
     ));
-    expect(find.byKey(Key('/')), findsOneWidget);
-    expect(find.byKey(Key('/a')), findsNothing);
+    expect(find.byKey(const Key('/')), findsOneWidget);
+    expect(find.byKey(const Key('/a')), findsNothing);
     await tester.runAsync(() => pushRouteNameToFramework(null, '/a'));
     // start animation
     await tester.pump();
     // skip past animation (5s is arbitrary, just needs to be long enough)
     await tester.pump(const Duration(seconds: 5));
-    expect(find.byKey(Key('/a')), findsOneWidget);
-    expect(find.byKey(Key('/')), findsNothing);
+    expect(find.byKey(const Key('/a')), findsOneWidget);
+    expect(find.byKey(const Key('/')), findsNothing);
   });
 }
 
@@ -50,7 +50,7 @@
   @override
   Future<RouteInformation> parseRouteInformation(
       RouteInformation routeInformation) {
-    return SynchronousFuture(routeInformation);
+    return SynchronousFuture<RouteInformation>(routeInformation);
   }
 
   @override
@@ -66,22 +66,22 @@
   @override
   Future<void> setNewRoutePath(RouteInformation configuration) {
     _history.add(configuration);
-    return SynchronousFuture(null);
+    return SynchronousFuture<void>(null);
   }
 
   @override
   Future<bool> popRoute() {
     if (_history.isEmpty) {
-      return SynchronousFuture(false);
+      return SynchronousFuture<bool>(false);
     }
     _history.removeLast();
-    return SynchronousFuture(true);
+    return SynchronousFuture<bool>(true);
   }
 
   @override
   Widget build(BuildContext context) {
     if (_history.isEmpty) {
-      return Placeholder(key: Key('empty'));
+      return const Placeholder(key: Key('empty'));
     }
     return Placeholder(key: Key('${_history.last.location}'));
   }
diff --git a/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart b/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart
index 23d9a45..e44e80b 100644
--- a/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart
@@ -2,11 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:mockito/mockito.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
+import 'package:mockito/mockito.dart';
 import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-
 import 'package:url_launcher_platform_interface/link.dart';
 import 'package:url_launcher_platform_interface/method_channel_url_launcher.dart';
 import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
@@ -69,7 +68,7 @@
     });
 
     test('canLaunch should return false if platform returns null', () async {
-      final canLaunch = await launcher.canLaunch('http://example.com/');
+      final bool canLaunch = await launcher.canLaunch('http://example.com/');
 
       expect(canLaunch, false);
     });
@@ -283,7 +282,7 @@
     });
 
     test('launch should return false if platform returns null', () async {
-      final launched = await launcher.launch(
+      final bool launched = await launcher.launch(
         'http://example.com/',
         useSafariVC: true,
         useWebView: false,
diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md
index f5338e6..5790e11 100644
--- a/packages/url_launcher/url_launcher_web/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.0.5
+
+* Updates code for new analysis options.
+
 ## 2.0.4
 
 * Add `implements` to pubspec.
diff --git a/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart b/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
index 0487aca..3e2a025 100644
--- a/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
+++ b/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
@@ -4,11 +4,12 @@
 
 import 'dart:html' as html;
 import 'dart:js_util';
+
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
+import 'package:integration_test/integration_test.dart';
 import 'package:url_launcher_platform_interface/link.dart';
 import 'package:url_launcher_web/src/link.dart';
-import 'package:integration_test/integration_test.dart';
 
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
@@ -59,14 +60,14 @@
         textDirection: TextDirection.ltr,
         child: Center(
           child: ConstrainedBox(
-            constraints: BoxConstraints.tight(Size(100.0, 100.0)),
+            constraints: BoxConstraints.tight(const Size(100.0, 100.0)),
             child: WebLinkDelegate(TestLinkInfo(
               uri: uri,
               target: LinkTarget.blank,
               builder: (BuildContext context, FollowLink? followLink) {
                 return Container(
                   key: containerKey,
-                  child: SizedBox(width: 50.0, height: 50.0),
+                  child: const SizedBox(width: 50.0, height: 50.0),
                 );
               },
             )),
@@ -128,6 +129,12 @@
 }
 
 class TestLinkInfo extends LinkInfo {
+  TestLinkInfo({
+    required this.uri,
+    required this.target,
+    required this.builder,
+  });
+
   @override
   final LinkWidgetBuilder builder;
 
@@ -139,10 +146,4 @@
 
   @override
   bool get isDisabled => uri == null;
-
-  TestLinkInfo({
-    required this.uri,
-    required this.target,
-    required this.builder,
-  });
 }
diff --git a/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.dart b/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.dart
index 0b53a1f..10f5e0b 100644
--- a/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.dart
+++ b/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.dart
@@ -3,15 +3,16 @@
 // found in the LICENSE file.
 
 import 'dart:html' as html;
+
 import 'package:flutter_test/flutter_test.dart';
-import 'package:mockito/annotations.dart';
-import 'package:url_launcher_web/url_launcher_web.dart';
-import 'package:mockito/mockito.dart';
 import 'package:integration_test/integration_test.dart';
+import 'package:mockito/annotations.dart';
+import 'package:mockito/mockito.dart';
+import 'package:url_launcher_web/url_launcher_web.dart';
 
 import 'url_launcher_web_test.mocks.dart';
 
-@GenerateMocks([html.Window, html.Navigator])
+@GenerateMocks(<Type>[html.Window, html.Navigator])
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
diff --git a/packages/url_launcher/url_launcher_web/example/lib/main.dart b/packages/url_launcher/url_launcher_web/example/lib/main.dart
index e1a38dc..341913a 100644
--- a/packages/url_launcher/url_launcher_web/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher_web/example/lib/main.dart
@@ -17,7 +17,7 @@
 class _MyAppState extends State<MyApp> {
   @override
   Widget build(BuildContext context) {
-    return Directionality(
+    return const Directionality(
       textDirection: TextDirection.ltr,
       child: Text('Testing... Look at the console output for results!'),
     );
diff --git a/packages/url_launcher/url_launcher_web/example/pubspec.yaml b/packages/url_launcher/url_launcher_web/example/pubspec.yaml
index 872bc88..bface46 100644
--- a/packages/url_launcher/url_launcher_web/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/example/pubspec.yaml
@@ -11,12 +11,12 @@
 
 dev_dependencies:
   build_runner: ^2.1.1
-  mockito: ^5.0.0
-  url_launcher_web:
-    path: ../
   flutter_driver:
     sdk: flutter
   flutter_test:
     sdk: flutter
   integration_test:
     sdk: flutter
+  mockito: ^5.0.0
+  url_launcher_web:
+    path: ../
diff --git a/packages/url_launcher/url_launcher_web/lib/src/link.dart b/packages/url_launcher/url_launcher_web/lib/src/link.dart
index 3c556b3..d3fa4a8 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/link.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/link.dart
@@ -85,8 +85,8 @@
                 (BuildContext context, PlatformViewController controller) {
               return PlatformViewSurface(
                 controller: controller,
-                gestureRecognizers:
-                    Set<Factory<OneSequenceGestureRecognizer>>(),
+                gestureRecognizers: const <
+                    Factory<OneSequenceGestureRecognizer>>{},
                 hitTestBehavior: PlatformViewHitTestBehavior.transparent,
               );
             },
@@ -123,7 +123,8 @@
     return controller;
   }
 
-  static Map<int, LinkViewController> _instances = <int, LinkViewController>{};
+  static final Map<int, LinkViewController> _instances =
+      <int, LinkViewController>{};
 
   static html.Element _viewFactory(int viewId) {
     return _instances[viewId]!._element;
@@ -131,7 +132,7 @@
 
   static int? _hitTestedViewId;
 
-  static late StreamSubscription _clickSubscription;
+  static late StreamSubscription<html.MouseEvent> _clickSubscription;
 
   static void _onGlobalClick(html.MouseEvent event) {
     final int? viewId = getViewIdFromTarget(event);
@@ -271,6 +272,10 @@
 int? getViewIdFromTarget(html.Event event) {
   final html.Element? linkElement = getLinkElementFromTarget(event);
   if (linkElement != null) {
+    // TODO(stuartmorgan): Remove this ignore (and change to getProperty<int>)
+    // once the templated version is available on stable. On master (2.8) this
+    // is already not necessary.
+    // ignore: return_of_invalid_type
     return getProperty(linkElement, linkViewIdProperty);
   }
   return null;
diff --git a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart
index 5eacec5..0f6cd89 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui.dart
@@ -5,6 +5,6 @@
 /// This file shims dart:ui in web-only scenarios, getting rid of the need to
 /// suppress analyzer warnings.
 
-// TODO(flutter/flutter#55000) Remove this file once web-only dart:ui APIs
-// are exposed from a dedicated place.
+// TODO(ditman): Remove this file once web-only dart:ui APIs
+// are exposed from a dedicated place, flutter/flutter#55000.
 export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart
index f2862af..8757ca2 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/shims/dart_ui_fake.dart
@@ -7,13 +7,18 @@
 // Fake interface for the logic that this package needs from (web-only) dart:ui.
 // This is conditionally exported so the analyzer sees these methods as available.
 
+// ignore_for_file: avoid_classes_with_only_static_members
+// ignore_for_file: camel_case_types
+
 /// Shim for web_ui engine.PlatformViewRegistry
 /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L62
 class platformViewRegistry {
   /// Shim for registerViewFactory
   /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L72
-  static registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory) {}
+  static bool registerViewFactory(
+      String viewTypeId, html.Element Function(int viewId) viewFactory) {
+    return false;
+  }
 }
 
 /// Shim for web_ui engine.AssetManager.
@@ -21,7 +26,7 @@
 class webOnlyAssetManager {
   /// Shim for getAssetUrl.
   /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/assets.dart#L45
-  static getAssetUrl(String asset) {}
+  static String getAssetUrl(String asset) => '';
 }
 
 /// Signature of callbacks that have no arguments and return no data.
diff --git a/packages/url_launcher/url_launcher_web/lib/src/third_party/platform_detect/browser.dart b/packages/url_launcher/url_launcher_web/lib/src/third_party/platform_detect/browser.dart
index 9e83c39..6935cb5 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/third_party/platform_detect/browser.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/third_party/platform_detect/browser.dart
@@ -26,8 +26,8 @@
 /// Determines if the `navigator` is Safari.
 bool navigatorIsSafari(html.Navigator navigator) {
   // An web view running in an iOS app does not have a 'Version/X.X.X' string in the appVersion
-  final vendor = navigator.vendor;
-  final appVersion = navigator.appVersion;
+  final String vendor = navigator.vendor;
+  final String appVersion = navigator.appVersion;
   return vendor != null &&
       vendor.contains('Apple') &&
       appVersion != null &&
diff --git a/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart b/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
index 9249837..571acaf 100644
--- a/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
+++ b/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
@@ -4,7 +4,6 @@
 
 import 'dart:async';
 import 'dart:html' as html;
-import 'src/shims/dart_ui.dart' as ui;
 
 import 'package:flutter_web_plugins/flutter_web_plugins.dart';
 import 'package:meta/meta.dart';
@@ -12,9 +11,10 @@
 import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
 
 import 'src/link.dart';
+import 'src/shims/dart_ui.dart' as ui;
 import 'src/third_party/platform_detect/browser.dart';
 
-const _safariTargetTopSchemes = {
+const Set<String> _safariTargetTopSchemes = <String>{
   'mailto',
   'tel',
   'sms',
@@ -28,21 +28,21 @@
 ///
 /// This class implements the `package:url_launcher` functionality for the web.
 class UrlLauncherPlugin extends UrlLauncherPlatform {
-  html.Window _window;
-  bool _isSafari = false;
-
-  // The set of schemes that can be handled by the plugin
-  static final _supportedSchemes = {
-    'http',
-    'https',
-  }.union(_safariTargetTopSchemes);
-
   /// A constructor that allows tests to override the window object used by the plugin.
   UrlLauncherPlugin({@visibleForTesting html.Window? debugWindow})
       : _window = debugWindow ?? html.window {
     _isSafari = navigatorIsSafari(_window.navigator);
   }
 
+  final html.Window _window;
+  bool _isSafari = false;
+
+  // The set of schemes that can be handled by the plugin
+  static final Set<String> _supportedSchemes = <String>{
+    'http',
+    'https',
+  }.union(_safariTargetTopSchemes);
+
   /// Registers this class as the default instance of [UrlLauncherPlatform].
   static void registerWith(Registrar registrar) {
     UrlLauncherPlatform.instance = UrlLauncherPlugin();
@@ -61,7 +61,7 @@
   html.WindowBase openNewWindow(String url, {String? webOnlyWindowName}) {
     // We need to open mailto, tel and sms urls on the _top window context on safari browsers.
     // See https://github.com/flutter/flutter/issues/51461 for reference.
-    final target = webOnlyWindowName ??
+    final String target = webOnlyWindowName ??
         ((_isSafari && _isSafariTargetTopScheme(url)) ? '_top' : '');
     return _window.open(url, target);
   }
diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml
index 77e8068..37d3193 100644
--- a/packages/url_launcher/url_launcher_web/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of url_launcher
 repository: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 2.0.4
+version: 2.0.5
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
@@ -27,4 +27,3 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  pedantic: ^1.10.0
diff --git a/packages/url_launcher/url_launcher_windows/CHANGELOG.md b/packages/url_launcher/url_launcher_windows/CHANGELOG.md
index d095a52..e599b1f 100644
--- a/packages/url_launcher/url_launcher_windows/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_windows/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## NEXT
 
-* Added unit tests.
+* Adds unit tests.
+* Updates code for new analysis options.
 
 ## 2.0.2
 
diff --git a/packages/url_launcher/url_launcher_windows/example/integration_test/url_launcher_test.dart b/packages/url_launcher/url_launcher_windows/example/integration_test/url_launcher_test.dart
index ae9a914..c9d0d8c 100644
--- a/packages/url_launcher/url_launcher_windows/example/integration_test/url_launcher_test.dart
+++ b/packages/url_launcher/url_launcher_windows/example/integration_test/url_launcher_test.dart
@@ -10,7 +10,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets('canLaunch', (WidgetTester _) async {
-    UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
+    final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;
 
     expect(await launcher.canLaunch('randomstring'), false);
 
diff --git a/packages/url_launcher/url_launcher_windows/example/lib/main.dart b/packages/url_launcher/url_launcher_windows/example/lib/main.dart
index 86e06f3..a9a5d22 100644
--- a/packages/url_launcher/url_launcher_windows/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher_windows/example/lib/main.dart
@@ -20,13 +20,13 @@
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
-      home: MyHomePage(title: 'URL Launcher'),
+      home: const MyHomePage(title: 'URL Launcher'),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
+  const MyHomePage({Key? key, required this.title}) : super(key: key);
   final String title;
 
   @override
diff --git a/packages/url_launcher/url_launcher_windows/example/pubspec.yaml b/packages/url_launcher/url_launcher_windows/example/pubspec.yaml
index 11be3e8..08350fd 100644
--- a/packages/url_launcher/url_launcher_windows/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_windows/example/pubspec.yaml
@@ -19,11 +19,10 @@
     path: ../
 
 dev_dependencies:
-  integration_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
-  pedantic: ^1.10.0
+  integration_test:
+    sdk: flutter
 
 flutter:
   uses-material-design: true
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index b3823da..820a06a 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -22,7 +22,6 @@
 - in_app_purchase
 - ios_platform_images
 - local_auth
-- url_launcher
 - video_player
 - webview_flutter/webview_flutter
 
