[image_picker] Update app-facing and web analysis options (#4838)

diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md
index 992c8b2..382798f 100644
--- a/packages/image_picker/image_picker/CHANGELOG.md
+++ b/packages/image_picker/image_picker/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.8.4+9
+
+* Internal code cleanup for stricter analysis options.
+
 ## 0.8.4+8
 
 * Configures the `UIImagePicker` to default to gallery instead of camera when
diff --git a/packages/image_picker/image_picker/analysis_options.yaml b/packages/image_picker/image_picker/analysis_options.yaml
deleted file mode 100644
index 5aeb4e7..0000000
--- a/packages/image_picker/image_picker/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../../analysis_options_legacy.yaml
diff --git a/packages/image_picker/image_picker/example/lib/main.dart b/packages/image_picker/image_picker/example/lib/main.dart
index 0f5ba76..f3ad237 100755
--- a/packages/image_picker/image_picker/example/lib/main.dart
+++ b/packages/image_picker/image_picker/example/lib/main.dart
@@ -19,7 +19,7 @@
 class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
-    return MaterialApp(
+    return const MaterialApp(
       title: 'Image Picker Demo',
       home: MyHomePage(title: 'Image Picker Example'),
     );
@@ -27,7 +27,7 @@
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, this.title}) : super(key: key);
+  const MyHomePage({Key? key, this.title}) : super(key: key);
 
   final String? title;
 
@@ -39,7 +39,7 @@
   List<XFile>? _imageFileList;
 
   set _imageFile(XFile? value) {
-    _imageFileList = value == null ? null : [value];
+    _imageFileList = value == null ? null : <XFile>[value];
   }
 
   dynamic _pickImageError;
@@ -69,7 +69,7 @@
       // Mute the video so it auto-plays in web!
       // This is not needed if the call to .play is the result of user
       // interaction (clicking on a "play" button, for example).
-      final double volume = kIsWeb ? 0.0 : 1.0;
+      const double volume = kIsWeb ? 0.0 : 1.0;
       await controller.setVolume(volume);
       await controller.initialize();
       await controller.setLooping(true);
@@ -78,7 +78,7 @@
     }
   }
 
-  void _onImageButtonPressed(ImageSource source,
+  Future<void> _onImageButtonPressed(ImageSource source,
       {BuildContext? context, bool isMultiImage = false}) async {
     if (_controller != null) {
       await _controller!.setVolume(0.0);
@@ -91,7 +91,7 @@
       await _displayPickImageDialog(context!,
           (double? maxWidth, double? maxHeight, int? quality) async {
         try {
-          final pickedFileList = await _picker.pickMultiImage(
+          final List<XFile>? pickedFileList = await _picker.pickMultiImage(
             maxWidth: maxWidth,
             maxHeight: maxHeight,
             imageQuality: quality,
@@ -109,7 +109,7 @@
       await _displayPickImageDialog(context!,
           (double? maxWidth, double? maxHeight, int? quality) async {
         try {
-          final pickedFile = await _picker.pickImage(
+          final XFile? pickedFile = await _picker.pickImage(
             source: source,
             maxWidth: maxWidth,
             maxHeight: maxHeight,
@@ -179,7 +179,7 @@
       return Semantics(
           child: ListView.builder(
             key: UniqueKey(),
-            itemBuilder: (context, index) {
+            itemBuilder: (BuildContext context, int index) {
               // Why network for web?
               // See https://pub.dev/packages/image_picker#getting-ready-for-the-web-platform
               return Semantics(
@@ -358,28 +358,30 @@
       BuildContext context, OnPickImageCallback onPick) async {
     return showDialog(
         context: context,
-        builder: (context) {
+        builder: (BuildContext context) {
           return AlertDialog(
-            title: Text('Add optional parameters'),
+            title: const Text('Add optional parameters'),
             content: Column(
               children: <Widget>[
                 TextField(
                   controller: maxWidthController,
-                  keyboardType: TextInputType.numberWithOptions(decimal: true),
-                  decoration:
-                      InputDecoration(hintText: "Enter maxWidth if desired"),
+                  keyboardType:
+                      const TextInputType.numberWithOptions(decimal: true),
+                  decoration: const InputDecoration(
+                      hintText: 'Enter maxWidth if desired'),
                 ),
                 TextField(
                   controller: maxHeightController,
-                  keyboardType: TextInputType.numberWithOptions(decimal: true),
-                  decoration:
-                      InputDecoration(hintText: "Enter maxHeight if desired"),
+                  keyboardType:
+                      const TextInputType.numberWithOptions(decimal: true),
+                  decoration: const InputDecoration(
+                      hintText: 'Enter maxHeight if desired'),
                 ),
                 TextField(
                   controller: qualityController,
                   keyboardType: TextInputType.number,
-                  decoration:
-                      InputDecoration(hintText: "Enter quality if desired"),
+                  decoration: const InputDecoration(
+                      hintText: 'Enter quality if desired'),
                 ),
               ],
             ),
@@ -393,13 +395,13 @@
               TextButton(
                   child: const Text('PICK'),
                   onPressed: () {
-                    double? width = maxWidthController.text.isNotEmpty
+                    final double? width = maxWidthController.text.isNotEmpty
                         ? double.parse(maxWidthController.text)
                         : null;
-                    double? height = maxHeightController.text.isNotEmpty
+                    final double? height = maxHeightController.text.isNotEmpty
                         ? double.parse(maxHeightController.text)
                         : null;
-                    int? quality = qualityController.text.isNotEmpty
+                    final int? quality = qualityController.text.isNotEmpty
                         ? int.parse(qualityController.text)
                         : null;
                     onPick(width, height, quality);
@@ -411,11 +413,11 @@
   }
 }
 
-typedef void OnPickImageCallback(
+typedef OnPickImageCallback = void Function(
     double? maxWidth, double? maxHeight, int? quality);
 
 class AspectRatioVideo extends StatefulWidget {
-  AspectRatioVideo(this.controller);
+  const AspectRatioVideo(this.controller);
 
   final VideoPlayerController? controller;
 
diff --git a/packages/image_picker/image_picker/example/pubspec.yaml b/packages/image_picker/image_picker/example/pubspec.yaml
index e11da82..28b3719 100755
--- a/packages/image_picker/image_picker/example/pubspec.yaml
+++ b/packages/image_picker/image_picker/example/pubspec.yaml
@@ -7,7 +7,6 @@
   flutter: ">=2.5.0"
 
 dependencies:
-  video_player: ^2.1.4
   flutter:
     sdk: flutter
   flutter_plugin_android_lifecycle: ^2.0.1
@@ -18,6 +17,7 @@
     # The example app is bundled with the plugin so we use a path dependency on
     # the parent directory to use the current plugin's version.
     path: ../
+  video_player: ^2.1.4
 
 dev_dependencies:
   espresso: ^0.1.0+2
@@ -25,7 +25,6 @@
     sdk: flutter
   integration_test:
     sdk: flutter
-  pedantic: ^1.10.0
 
 flutter:
   uses-material-design: true
diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml
index 43143f1..1d280f1 100755
--- a/packages/image_picker/image_picker/pubspec.yaml
+++ b/packages/image_picker/image_picker/pubspec.yaml
@@ -3,7 +3,7 @@
   library, and taking new pictures with the camera.
 repository: https://github.com/flutter/plugins/tree/main/packages/image_picker/image_picker
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
-version: 0.8.4+8
+version: 0.8.4+9
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
@@ -31,5 +31,4 @@
   flutter_test:
     sdk: flutter
   mockito: ^5.0.0
-  pedantic: ^1.10.0
   plugin_platform_interface: ^2.0.0
diff --git a/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart b/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart
index f295e3d..00049e1 100644
--- a/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart
+++ b/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart
@@ -23,7 +23,7 @@
 
     final List<MethodCall> log = <MethodCall>[];
 
-    final picker = ImagePicker();
+    final ImagePicker picker = ImagePicker();
 
     test('ImagePicker platform instance overrides the actual platform used',
         () {
@@ -359,7 +359,7 @@
       setUp(() {
         channel.setMockMethodCallHandler((MethodCall methodCall) async {
           log.add(methodCall);
-          return [];
+          return <dynamic>[];
         });
         log.clear();
       });
diff --git a/packages/image_picker/image_picker/test/image_picker_test.dart b/packages/image_picker/image_picker/test/image_picker_test.dart
index 10bc640..b41fbe3 100644
--- a/packages/image_picker/image_picker/test/image_picker_test.dart
+++ b/packages/image_picker/image_picker/test/image_picker_test.dart
@@ -18,7 +18,7 @@
 
     final List<MethodCall> log = <MethodCall>[];
 
-    final picker = ImagePicker();
+    final ImagePicker picker = ImagePicker();
 
     test('ImagePicker platform instance overrides the actual platform used',
         () {
@@ -321,7 +321,7 @@
             return <String, dynamic>{
               'type': 'image',
               'path': '/example/path1',
-              'pathList': ['/example/path0', '/example/path1'],
+              'pathList': <dynamic>['/example/path0', '/example/path1'],
             };
           });
 
@@ -372,7 +372,7 @@
       setUp(() {
         channel.setMockMethodCallHandler((MethodCall methodCall) async {
           log.add(methodCall);
-          return [];
+          return <dynamic>[];
         });
         log.clear();
       });
diff --git a/packages/image_picker/image_picker_for_web/CHANGELOG.md b/packages/image_picker/image_picker_for_web/CHANGELOG.md
index 78629a4..dcf353f 100644
--- a/packages/image_picker/image_picker_for_web/CHANGELOG.md
+++ b/packages/image_picker/image_picker_for_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.6
+
+* Internal code cleanup for stricter analysis options.
+
 ## 2.1.5
 
 * Removes dependency on `meta`.
diff --git a/packages/image_picker/image_picker_for_web/analysis_options.yaml b/packages/image_picker/image_picker_for_web/analysis_options.yaml
deleted file mode 100644
index 5aeb4e7..0000000
--- a/packages/image_picker/image_picker_for_web/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../../analysis_options_legacy.yaml
diff --git a/packages/image_picker/image_picker_for_web/example/integration_test/image_picker_for_web_test.dart b/packages/image_picker/image_picker_for_web/example/integration_test/image_picker_for_web_test.dart
index c1025a9..9fe40da 100644
--- a/packages/image_picker/image_picker_for_web/example/integration_test/image_picker_for_web_test.dart
+++ b/packages/image_picker/image_picker_for_web/example/integration_test/image_picker_for_web_test.dart
@@ -11,16 +11,17 @@
 import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
 import 'package:integration_test/integration_test.dart';
 
-final String expectedStringContents = 'Hello, world!';
-final String otherStringContents = 'Hello again, world!';
+const String expectedStringContents = 'Hello, world!';
+const String otherStringContents = 'Hello again, world!';
 final Uint8List bytes = utf8.encode(expectedStringContents) as Uint8List;
 final Uint8List otherBytes = utf8.encode(otherStringContents) as Uint8List;
-final Map<String, dynamic> options = {
+final Map<String, dynamic> options = <String, dynamic>{
   'type': 'text/plain',
   'lastModified': DateTime.utc(2017, 12, 13).millisecondsSinceEpoch,
 };
-final html.File textFile = html.File([bytes], 'hello.txt', options);
-final html.File secondTextFile = html.File([otherBytes], 'secondFile.txt');
+final html.File textFile = html.File(<Uint8List>[bytes], 'hello.txt', options);
+final html.File secondTextFile =
+    html.File(<Uint8List>[otherBytes], 'secondFile.txt');
 
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
@@ -33,16 +34,17 @@
   });
 
   testWidgets('Can select a file (Deprecated)', (WidgetTester tester) async {
-    final mockInput = html.FileUploadInputElement();
+    final html.FileUploadInputElement mockInput = html.FileUploadInputElement();
 
-    final overrides = ImagePickerPluginTestOverrides()
-      ..createInputElement = ((_, __) => mockInput)
-      ..getMultipleFilesFromInput = ((_) => [textFile]);
+    final ImagePickerPluginTestOverrides overrides =
+        ImagePickerPluginTestOverrides()
+          ..createInputElement = ((_, __) => mockInput)
+          ..getMultipleFilesFromInput = ((_) => <html.File>[textFile]);
 
-    final plugin = ImagePickerPlugin(overrides: overrides);
+    final ImagePickerPlugin plugin = ImagePickerPlugin(overrides: overrides);
 
     // Init the pick file dialog...
-    final file = plugin.pickFile();
+    final Future<PickedFile> file = plugin.pickFile();
 
     // Mock the browser behavior of selecting a file...
     mockInput.dispatchEvent(html.Event('change'));
@@ -54,16 +56,17 @@
   });
 
   testWidgets('Can select a file', (WidgetTester tester) async {
-    final mockInput = html.FileUploadInputElement();
+    final html.FileUploadInputElement mockInput = html.FileUploadInputElement();
 
-    final overrides = ImagePickerPluginTestOverrides()
-      ..createInputElement = ((_, __) => mockInput)
-      ..getMultipleFilesFromInput = ((_) => [textFile]);
+    final ImagePickerPluginTestOverrides overrides =
+        ImagePickerPluginTestOverrides()
+          ..createInputElement = ((_, __) => mockInput)
+          ..getMultipleFilesFromInput = ((_) => <html.File>[textFile]);
 
-    final plugin = ImagePickerPlugin(overrides: overrides);
+    final ImagePickerPlugin plugin = ImagePickerPlugin(overrides: overrides);
 
     // Init the pick file dialog...
-    final image = plugin.getImage(source: ImageSource.camera);
+    final Future<XFile> image = plugin.getImage(source: ImageSource.camera);
 
     // Mock the browser behavior of selecting a file...
     mockInput.dispatchEvent(html.Event('change'));
@@ -85,16 +88,18 @@
   });
 
   testWidgets('Can select multiple files', (WidgetTester tester) async {
-    final mockInput = html.FileUploadInputElement();
+    final html.FileUploadInputElement mockInput = html.FileUploadInputElement();
 
-    final overrides = ImagePickerPluginTestOverrides()
-      ..createInputElement = ((_, __) => mockInput)
-      ..getMultipleFilesFromInput = ((_) => [textFile, secondTextFile]);
+    final ImagePickerPluginTestOverrides overrides =
+        ImagePickerPluginTestOverrides()
+          ..createInputElement = ((_, __) => mockInput)
+          ..getMultipleFilesFromInput =
+              ((_) => <html.File>[textFile, secondTextFile]);
 
-    final plugin = ImagePickerPlugin(overrides: overrides);
+    final ImagePickerPlugin plugin = ImagePickerPlugin(overrides: overrides);
 
     // Init the pick file dialog...
-    final files = plugin.getMultiImage();
+    final Future<List<XFile>> files = plugin.getMultiImage();
 
     // Mock the browser behavior of selecting a file...
     mockInput.dispatchEvent(html.Event('change'));
@@ -135,7 +140,7 @@
 
   group('createInputElement', () {
     testWidgets('accept: any, capture: null', (WidgetTester tester) async {
-      html.Element input = plugin.createInputElement('any', null);
+      final html.Element input = plugin.createInputElement('any', null);
 
       expect(input.attributes, containsPair('accept', 'any'));
       expect(input.attributes, isNot(contains('capture')));
@@ -143,7 +148,7 @@
     });
 
     testWidgets('accept: any, capture: something', (WidgetTester tester) async {
-      html.Element input = plugin.createInputElement('any', 'something');
+      final html.Element input = plugin.createInputElement('any', 'something');
 
       expect(input.attributes, containsPair('accept', 'any'));
       expect(input.attributes, containsPair('capture', 'something'));
@@ -152,7 +157,7 @@
 
     testWidgets('accept: any, capture: null, multi: true',
         (WidgetTester tester) async {
-      html.Element input =
+      final html.Element input =
           plugin.createInputElement('any', null, multiple: true);
 
       expect(input.attributes, containsPair('accept', 'any'));
@@ -162,7 +167,7 @@
 
     testWidgets('accept: any, capture: something, multi: true',
         (WidgetTester tester) async {
-      html.Element input =
+      final html.Element input =
           plugin.createInputElement('any', 'something', multiple: true);
 
       expect(input.attributes, containsPair('accept', 'any'));
diff --git a/packages/image_picker/image_picker_for_web/example/integration_test/image_resizer_test.dart b/packages/image_picker/image_picker_for_web/example/integration_test/image_resizer_test.dart
index 067c775..91794a7 100644
--- a/packages/image_picker/image_picker_for_web/example/integration_test/image_resizer_test.dart
+++ b/packages/image_picker/image_picker_for_web/example/integration_test/image_resizer_test.dart
@@ -13,8 +13,8 @@
 import 'package:integration_test/integration_test.dart';
 
 //This is a sample 10x10 png image
-final String pngFileBase64Contents =
-    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAQMAAAC3/F3+AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEXqQzX+/v6lfubTAAAAAWJLR0QB/wIt3gAAAAlwSFlzAAAHEwAABxMBziAPCAAAAAd0SU1FB+UJHgsdDM0ErZoAAAALSURBVAjXY2DABwAAHgABboVHMgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wOS0zMFQxMToyOToxMi0wNDowMHCDC24AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDktMzBUMTE6Mjk6MTItMDQ6MDAB3rPSAAAAAElFTkSuQmCC";
+const String pngFileBase64Contents =
+    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAQMAAAC3/F3+AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEXqQzX+/v6lfubTAAAAAWJLR0QB/wIt3gAAAAlwSFlzAAAHEwAABxMBziAPCAAAAAd0SU1FB+UJHgsdDM0ErZoAAAALSURBVAjXY2DABwAAHgABboVHMgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wOS0zMFQxMToyOToxMi0wNDowMHCDC24AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDktMzBUMTE6Mjk6MTItMDQ6MDAB3rPSAAAAAElFTkSuQmCC';
 
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
@@ -24,105 +24,114 @@
   late XFile pngFile;
   setUp(() {
     imageResizer = ImageResizer();
-    final pngHtmlFile = _base64ToFile(pngFileBase64Contents, "pngImage.png");
+    final html.File pngHtmlFile =
+        _base64ToFile(pngFileBase64Contents, 'pngImage.png');
     pngFile = XFile(html.Url.createObjectUrl(pngHtmlFile),
         name: pngHtmlFile.name, mimeType: pngHtmlFile.type);
   });
 
-  testWidgets("image is loaded correctly ", (WidgetTester tester) async {
-    final imageElement = await imageResizer.loadImage(pngFile.path);
+  testWidgets('image is loaded correctly ', (WidgetTester tester) async {
+    final html.ImageElement imageElement =
+        await imageResizer.loadImage(pngFile.path);
     expect(imageElement.width!, 10);
     expect(imageElement.height!, 10);
   });
 
   testWidgets(
       "canvas is loaded with image's width and height when max width and max height are null",
-      (widgetTester) async {
-    final imageElement = await imageResizer.loadImage(pngFile.path);
-    final canvas = imageResizer.resizeImageElement(imageElement, null, null);
+      (WidgetTester widgetTester) async {
+    final html.ImageElement imageElement =
+        await imageResizer.loadImage(pngFile.path);
+    final html.CanvasElement canvas =
+        imageResizer.resizeImageElement(imageElement, null, null);
     expect(canvas.width, imageElement.width);
     expect(canvas.height, imageElement.height);
   });
 
   testWidgets(
-      "canvas size is scaled when max width and max height are not null",
-      (widgetTester) async {
-    final imageElement = await imageResizer.loadImage(pngFile.path);
-    final canvas = imageResizer.resizeImageElement(imageElement, 8, 8);
+      'canvas size is scaled when max width and max height are not null',
+      (WidgetTester widgetTester) async {
+    final html.ImageElement imageElement =
+        await imageResizer.loadImage(pngFile.path);
+    final html.CanvasElement canvas =
+        imageResizer.resizeImageElement(imageElement, 8, 8);
     expect(canvas.width, 8);
     expect(canvas.height, 8);
   });
 
-  testWidgets("resized image is returned after converting canvas to file",
-      (widgetTester) async {
-    final imageElement = await imageResizer.loadImage(pngFile.path);
-    final canvas = imageResizer.resizeImageElement(imageElement, null, null);
-    final resizedImage =
+  testWidgets('resized image is returned after converting canvas to file',
+      (WidgetTester widgetTester) async {
+    final html.ImageElement imageElement =
+        await imageResizer.loadImage(pngFile.path);
+    final html.CanvasElement canvas =
+        imageResizer.resizeImageElement(imageElement, null, null);
+    final XFile resizedImage =
         await imageResizer.writeCanvasToFile(pngFile, canvas, null);
-    expect(resizedImage.name, "scaled_${pngFile.name}");
+    expect(resizedImage.name, 'scaled_${pngFile.name}');
   });
 
-  testWidgets("image is scaled when maxWidth is set",
+  testWidgets('image is scaled when maxWidth is set',
       (WidgetTester tester) async {
-    final scaledImage =
+    final XFile scaledImage =
         await imageResizer.resizeImageIfNeeded(pngFile, 5, null, null);
-    expect(scaledImage.name, "scaled_${pngFile.name}");
-    final scaledImageSize = await _getImageSize(scaledImage);
-    expect(scaledImageSize, Size(5, 5));
+    expect(scaledImage.name, 'scaled_${pngFile.name}');
+    final Size scaledImageSize = await _getImageSize(scaledImage);
+    expect(scaledImageSize, const Size(5, 5));
   });
 
-  testWidgets("image is scaled when maxHeight is set",
+  testWidgets('image is scaled when maxHeight is set',
       (WidgetTester tester) async {
-    final scaledImage =
+    final XFile scaledImage =
         await imageResizer.resizeImageIfNeeded(pngFile, null, 6, null);
-    expect(scaledImage.name, "scaled_${pngFile.name}");
-    final scaledImageSize = await _getImageSize(scaledImage);
-    expect(scaledImageSize, Size(6, 6));
+    expect(scaledImage.name, 'scaled_${pngFile.name}');
+    final Size scaledImageSize = await _getImageSize(scaledImage);
+    expect(scaledImageSize, const Size(6, 6));
   });
 
-  testWidgets("image is scaled when imageQuality is set",
+  testWidgets('image is scaled when imageQuality is set',
       (WidgetTester tester) async {
-    final scaledImage =
+    final XFile scaledImage =
         await imageResizer.resizeImageIfNeeded(pngFile, null, null, 89);
-    expect(scaledImage.name, "scaled_${pngFile.name}");
+    expect(scaledImage.name, 'scaled_${pngFile.name}');
   });
 
-  testWidgets("image is scaled when maxWidth,maxHeight,imageQuality are set",
+  testWidgets('image is scaled when maxWidth,maxHeight,imageQuality are set',
       (WidgetTester tester) async {
-    final scaledImage =
+    final XFile scaledImage =
         await imageResizer.resizeImageIfNeeded(pngFile, 3, 4, 89);
-    expect(scaledImage.name, "scaled_${pngFile.name}");
+    expect(scaledImage.name, 'scaled_${pngFile.name}');
   });
 
-  testWidgets("image is not scaled when maxWidth,maxHeight, is set",
+  testWidgets('image is not scaled when maxWidth,maxHeight, is set',
       (WidgetTester tester) async {
-    final scaledImage =
+    final XFile scaledImage =
         await imageResizer.resizeImageIfNeeded(pngFile, null, null, null);
     expect(scaledImage.name, pngFile.name);
   });
 }
 
 Future<Size> _getImageSize(XFile file) async {
-  final completer = Completer<Size>();
-  final image = html.ImageElement(src: file.path);
-  image.onLoad.listen((event) {
+  final Completer<Size> completer = Completer<Size>();
+  final html.ImageElement image = html.ImageElement(src: file.path);
+  image.onLoad.listen((html.Event event) {
     completer.complete(Size(image.width!.toDouble(), image.height!.toDouble()));
   });
-  image.onError.listen((event) {
-    completer.complete(Size(0, 0));
+  image.onError.listen((html.Event event) {
+    completer.complete(const Size(0, 0));
   });
   return completer.future;
 }
 
 html.File _base64ToFile(String data, String fileName) {
-  var arr = data.split(',');
-  var bstr = html.window.atob(arr[1]);
-  var n = bstr.length, u8arr = Uint8List(n);
+  final List<String> arr = data.split(',');
+  final String bstr = html.window.atob(arr[1]);
+  int n = bstr.length;
+  final Uint8List u8arr = Uint8List(n);
 
   while (n >= 1) {
     u8arr[n - 1] = bstr.codeUnitAt(n - 1);
     n--;
   }
 
-  return html.File([u8arr], fileName);
+  return html.File(<Uint8List>[u8arr], fileName);
 }
diff --git a/packages/image_picker/image_picker_for_web/example/lib/main.dart b/packages/image_picker/image_picker_for_web/example/lib/main.dart
index e1a38dc..341913a 100644
--- a/packages/image_picker/image_picker_for_web/example/lib/main.dart
+++ b/packages/image_picker/image_picker_for_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/image_picker/image_picker_for_web/example/pubspec.yaml b/packages/image_picker/image_picker_for_web/example/pubspec.yaml
index 306a857..a9d6c7b 100644
--- a/packages/image_picker/image_picker_for_web/example/pubspec.yaml
+++ b/packages/image_picker/image_picker_for_web/example/pubspec.yaml
@@ -6,16 +6,16 @@
   flutter: ">=2.2.0"
 
 dependencies:
-  image_picker_for_web:
-    path: ../
   flutter:
     sdk: flutter
+  image_picker_for_web:
+    path: ../
 
 dev_dependencies:
-  js: ^0.6.3
-  flutter_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
+  flutter_test:
+    sdk: flutter
   integration_test:
     sdk: flutter
+  js: ^0.6.3
diff --git a/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart b/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
index 1320875..88d439c 100644
--- a/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
+++ b/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
@@ -10,22 +10,14 @@
 import 'package:image_picker_for_web/src/image_resizer.dart';
 import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
 
-final String _kImagePickerInputsDomId = '__image_picker_web-file-input';
-final String _kAcceptImageMimeType = 'image/*';
-final String _kAcceptVideoMimeType = 'video/3gpp,video/x-m4v,video/mp4,video/*';
+const String _kImagePickerInputsDomId = '__image_picker_web-file-input';
+const String _kAcceptImageMimeType = 'image/*';
+const String _kAcceptVideoMimeType = 'video/3gpp,video/x-m4v,video/mp4,video/*';
 
 /// The web implementation of [ImagePickerPlatform].
 ///
 /// This class implements the `package:image_picker` functionality for the web.
 class ImagePickerPlugin extends ImagePickerPlatform {
-  final ImagePickerPluginTestOverrides? _overrides;
-
-  bool get _hasOverrides => _overrides != null;
-
-  late html.Element _target;
-
-  late ImageResizer _imageResizer;
-
   /// A constructor that allows tests to override the function that creates file inputs.
   ImagePickerPlugin({
     @visibleForTesting ImagePickerPluginTestOverrides? overrides,
@@ -35,6 +27,14 @@
     _target = _ensureInitialized(_kImagePickerInputsDomId);
   }
 
+  final ImagePickerPluginTestOverrides? _overrides;
+
+  bool get _hasOverrides => _overrides != null;
+
+  late html.Element _target;
+
+  late ImageResizer _imageResizer;
+
   /// Registers this class as the default instance of [ImagePickerPlatform].
   static void registerWith(Registrar registrar) {
     ImagePickerPlatform.instance = ImagePickerPlugin();
@@ -60,7 +60,8 @@
     int? imageQuality,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) {
-    String? capture = computeCaptureAttribute(source, preferredCameraDevice);
+    final String? capture =
+        computeCaptureAttribute(source, preferredCameraDevice);
     return pickFile(accept: _kAcceptImageMimeType, capture: capture);
   }
 
@@ -82,7 +83,8 @@
     CameraDevice preferredCameraDevice = CameraDevice.rear,
     Duration? maxDuration,
   }) {
-    String? capture = computeCaptureAttribute(source, preferredCameraDevice);
+    final String? capture =
+        computeCaptureAttribute(source, preferredCameraDevice);
     return pickFile(accept: _kAcceptVideoMimeType, capture: capture);
   }
 
@@ -96,7 +98,7 @@
     String? accept,
     String? capture,
   }) {
-    html.FileUploadInputElement input =
+    final html.FileUploadInputElement input =
         createInputElement(accept, capture) as html.FileUploadInputElement;
     _injectAndActivate(input);
     return _getSelectedFile(input);
@@ -122,8 +124,9 @@
     int? imageQuality,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) async {
-    String? capture = computeCaptureAttribute(source, preferredCameraDevice);
-    List<XFile> files = await getFiles(
+    final String? capture =
+        computeCaptureAttribute(source, preferredCameraDevice);
+    final List<XFile> files = await getFiles(
       accept: _kAcceptImageMimeType,
       capture: capture,
     );
@@ -153,8 +156,9 @@
     CameraDevice preferredCameraDevice = CameraDevice.rear,
     Duration? maxDuration,
   }) async {
-    String? capture = computeCaptureAttribute(source, preferredCameraDevice);
-    List<XFile> files = await getFiles(
+    final String? capture =
+        computeCaptureAttribute(source, preferredCameraDevice);
+    final List<XFile> files = await getFiles(
       accept: _kAcceptVideoMimeType,
       capture: capture,
     );
@@ -173,7 +177,7 @@
       multiple: true,
     );
     final Iterable<Future<XFile>> resized = images.map(
-      (image) => _imageResizer.resizeImageIfNeeded(
+      (XFile image) => _imageResizer.resizeImageIfNeeded(
         image,
         maxWidth,
         maxHeight,
@@ -199,7 +203,7 @@
     String? capture,
     bool multiple = false,
   }) {
-    html.FileUploadInputElement input = createInputElement(
+    final html.FileUploadInputElement input = createInputElement(
       accept,
       capture,
       multiple: multiple,
@@ -232,24 +236,24 @@
   /// Handles the OnChange event from a FileUploadInputElement object
   /// Returns a list of selected files.
   List<html.File>? _handleOnChangeEvent(html.Event event) {
-    final html.FileUploadInputElement input =
-        event.target as html.FileUploadInputElement;
-    return _getFilesFromInput(input);
+    final html.FileUploadInputElement? input =
+        event.target as html.FileUploadInputElement?;
+    return input == null ? null : _getFilesFromInput(input);
   }
 
   /// Monitors an <input type="file"> and returns the selected file.
   Future<PickedFile> _getSelectedFile(html.FileUploadInputElement input) {
     final Completer<PickedFile> _completer = Completer<PickedFile>();
     // Observe the input until we can return something
-    input.onChange.first.then((event) {
-      final files = _handleOnChangeEvent(event);
+    input.onChange.first.then((html.Event event) {
+      final List<html.File>? files = _handleOnChangeEvent(event);
       if (!_completer.isCompleted && files != null) {
         _completer.complete(PickedFile(
           html.Url.createObjectUrl(files.first),
         ));
       }
     });
-    input.onError.first.then((event) {
+    input.onError.first.then((html.Event event) {
       if (!_completer.isCompleted) {
         _completer.completeError(event);
       }
@@ -264,10 +268,10 @@
   Future<List<XFile>> _getSelectedXFiles(html.FileUploadInputElement input) {
     final Completer<List<XFile>> _completer = Completer<List<XFile>>();
     // Observe the input until we can return something
-    input.onChange.first.then((event) {
-      final files = _handleOnChangeEvent(event);
+    input.onChange.first.then((html.Event event) {
+      final List<html.File>? files = _handleOnChangeEvent(event);
       if (!_completer.isCompleted && files != null) {
-        _completer.complete(files.map((file) {
+        _completer.complete(files.map((html.File file) {
           return XFile(
             html.Url.createObjectUrl(file),
             name: file.name,
@@ -280,7 +284,7 @@
         }).toList());
       }
     });
-    input.onError.first.then((event) {
+    input.onError.first.then((html.Event event) {
       if (!_completer.isCompleted) {
         _completer.completeError(event);
       }
@@ -293,7 +297,7 @@
 
   /// Initializes a DOM container where we can host input elements.
   html.Element _ensureInitialized(String id) {
-    var target = html.querySelector('#${id}');
+    html.Element? target = html.querySelector('#$id');
     if (target == null) {
       final html.Element targetElement =
           html.Element.tag('flt-image-picker-inputs')..id = id;
@@ -316,7 +320,7 @@
       return _overrides!.createInputElement(accept, capture);
     }
 
-    html.Element element = html.FileUploadInputElement()
+    final html.Element element = html.FileUploadInputElement()
       ..accept = accept
       ..multiple = multiple;
 
diff --git a/packages/image_picker/image_picker_for_web/lib/src/image_resizer.dart b/packages/image_picker/image_picker_for_web/lib/src/image_resizer.dart
index 6ee7c5f..e063099 100644
--- a/packages/image_picker/image_picker_for_web/lib/src/image_resizer.dart
+++ b/packages/image_picker/image_picker_for_web/lib/src/image_resizer.dart
@@ -3,11 +3,12 @@
 // found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:html' as html;
 import 'dart:math';
 import 'dart:ui';
+
 import 'package:image_picker_for_web/src/image_resizer_utils.dart';
 import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
-import 'dart:html' as html;
 
 /// Helper class that resizes images.
 class ImageResizer {
@@ -16,14 +17,16 @@
   Future<XFile> resizeImageIfNeeded(XFile file, double? maxWidth,
       double? maxHeight, int? imageQuality) async {
     if (!imageResizeNeeded(maxWidth, maxHeight, imageQuality) ||
-        file.mimeType == "image/gif") {
+        file.mimeType == 'image/gif') {
       // Implement maxWidth and maxHeight for image/gif
       return file;
     }
     try {
-      final imageElement = await loadImage(file.path);
-      final canvas = resizeImageElement(imageElement, maxWidth, maxHeight);
-      final resizedImage = await writeCanvasToFile(file, canvas, imageQuality);
+      final html.ImageElement imageElement = await loadImage(file.path);
+      final html.CanvasElement canvas =
+          resizeImageElement(imageElement, maxWidth, maxHeight);
+      final XFile resizedImage =
+          await writeCanvasToFile(file, canvas, imageQuality);
       html.Url.revokeObjectUrl(file.path);
       return resizedImage;
     } catch (e) {
@@ -33,15 +36,16 @@
 
   /// function that loads the blobUrl into an imageElement
   Future<html.ImageElement> loadImage(String blobUrl) {
-    final imageLoadCompleter = Completer<html.ImageElement>();
-    final imageElement = html.ImageElement();
+    final Completer<html.ImageElement> imageLoadCompleter =
+        Completer<html.ImageElement>();
+    final html.ImageElement imageElement = html.ImageElement();
     imageElement.src = blobUrl;
 
-    imageElement.onLoad.listen((event) {
+    imageElement.onLoad.listen((html.Event event) {
       imageLoadCompleter.complete(imageElement);
     });
-    imageElement.onError.listen((event) {
-      final exception = ("Error while loading image.");
+    imageElement.onError.listen((html.Event event) {
+      const String exception = 'Error while loading image.';
       imageElement.remove();
       imageLoadCompleter.completeError(exception);
     });
@@ -51,14 +55,14 @@
   /// Draws image to a canvas while resizing the image to fit the [maxWidth],[maxHeight] constraints
   html.CanvasElement resizeImageElement(
       html.ImageElement source, double? maxWidth, double? maxHeight) {
-    final newImageSize = calculateSizeOfDownScaledImage(
+    final Size newImageSize = calculateSizeOfDownScaledImage(
         Size(source.width!.toDouble(), source.height!.toDouble()),
         maxWidth,
         maxHeight);
-    final canvas = html.CanvasElement();
+    final html.CanvasElement canvas = html.CanvasElement();
     canvas.width = newImageSize.width.toInt();
     canvas.height = newImageSize.height.toInt();
-    final context = canvas.context2D;
+    final html.CanvasRenderingContext2D context = canvas.context2D;
     if (maxHeight == null && maxWidth == null) {
       context.drawImage(source, 0, 0);
     } else {
@@ -71,12 +75,13 @@
   /// [imageQuality] is only supported for jpeg and webp images.
   Future<XFile> writeCanvasToFile(
       XFile originalFile, html.CanvasElement canvas, int? imageQuality) async {
-    final calculatedImageQuality = ((min(imageQuality ?? 100, 100)) / 100.0);
-    final blob =
+    final double calculatedImageQuality =
+        (min(imageQuality ?? 100, 100)) / 100.0;
+    final html.Blob blob =
         await canvas.toBlob(originalFile.mimeType, calculatedImageQuality);
     return XFile(html.Url.createObjectUrlFromBlob(blob),
         mimeType: originalFile.mimeType,
-        name: "scaled_" + originalFile.name,
+        name: 'scaled_' + originalFile.name,
         lastModified: DateTime.now(),
         length: blob.size);
   }
diff --git a/packages/image_picker/image_picker_for_web/lib/src/image_resizer_utils.dart b/packages/image_picker/image_picker_for_web/lib/src/image_resizer_utils.dart
index 6ef7892..e906a88 100644
--- a/packages/image_picker/image_picker_for_web/lib/src/image_resizer_utils.dart
+++ b/packages/image_picker/image_picker_for_web/lib/src/image_resizer_utils.dart
@@ -16,7 +16,7 @@
 
 /// a function that checks if image quality is between 0 to 100
 bool isImageQualityValid(int imageQuality) {
-  return (imageQuality >= 0 && imageQuality <= 100);
+  return imageQuality >= 0 && imageQuality <= 100;
 }
 
 /// a function that calculates the size of the downScaled image.
@@ -26,8 +26,9 @@
 /// maxHeight is the maximum height of the scaled image
 Size calculateSizeOfDownScaledImage(
     Size imageSize, double? maxWidth, double? maxHeight) {
-  double widthFactor = maxWidth != null ? imageSize.width / maxWidth : 1;
-  double heightFactor = maxHeight != null ? imageSize.height / maxHeight : 1;
-  double resizeFactor = max(widthFactor, heightFactor);
-  return (resizeFactor > 1 ? imageSize ~/ resizeFactor : imageSize);
+  final double widthFactor = maxWidth != null ? imageSize.width / maxWidth : 1;
+  final double heightFactor =
+      maxHeight != null ? imageSize.height / maxHeight : 1;
+  final double resizeFactor = max(widthFactor, heightFactor);
+  return resizeFactor > 1 ? imageSize ~/ resizeFactor : imageSize;
 }
diff --git a/packages/image_picker/image_picker_for_web/pubspec.yaml b/packages/image_picker/image_picker_for_web/pubspec.yaml
index 285656a..deccd2b 100644
--- a/packages/image_picker/image_picker_for_web/pubspec.yaml
+++ b/packages/image_picker/image_picker_for_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of image_picker
 repository: https://github.com/flutter/plugins/tree/main/packages/image_picker/image_picker_for_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
-version: 2.1.5
+version: 2.1.6
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
@@ -22,7 +22,6 @@
   flutter_web_plugins:
     sdk: flutter
   image_picker_platform_interface: ^2.2.0
-  pedantic: ^1.10.0
 
 dev_dependencies:
   flutter_test:
diff --git a/packages/image_picker/image_picker_for_web/test/image_resizer_utils_test.dart b/packages/image_picker/image_picker_for_web/test/image_resizer_utils_test.dart
index 352d2be..0bfa817 100644
--- a/packages/image_picker/image_picker_for_web/test/image_resizer_utils_test.dart
+++ b/packages/image_picker/image_picker_for_web/test/image_resizer_utils_test.dart
@@ -8,34 +8,34 @@
 
 void main() {
   group('Image Resizer Utils', () {
-    group("calculateSizeOfScaledImage", () {
+    group('calculateSizeOfScaledImage', () {
       test(
           "scaled image height and width are same if max width and max height are same as image's width and height",
           () {
-        expect(calculateSizeOfDownScaledImage(Size(500, 300), 500, 300),
-            Size(500, 300));
+        expect(calculateSizeOfDownScaledImage(const Size(500, 300), 500, 300),
+            const Size(500, 300));
       });
 
       test(
-          "scaled image height and width are same if max width and max height are null",
+          'scaled image height and width are same if max width and max height are null',
           () {
-        expect(calculateSizeOfDownScaledImage(Size(500, 300), null, null),
-            Size(500, 300));
+        expect(calculateSizeOfDownScaledImage(const Size(500, 300), null, null),
+            const Size(500, 300));
       });
 
-      test("image size is scaled when maxWidth is set", () {
-        final imageSize = Size(500, 300);
-        final maxWidth = 400;
-        final scaledSize = calculateSizeOfDownScaledImage(
+      test('image size is scaled when maxWidth is set', () {
+        const Size imageSize = Size(500, 300);
+        const int maxWidth = 400;
+        final Size scaledSize = calculateSizeOfDownScaledImage(
             Size(imageSize.width, imageSize.height), maxWidth.toDouble(), null);
         expect(scaledSize.height <= imageSize.height, true);
         expect(scaledSize.width <= maxWidth, true);
       });
 
-      test("image size is scaled when maxHeight is set", () {
-        final imageSize = Size(500, 300);
-        final maxHeight = 400;
-        final scaledSize = calculateSizeOfDownScaledImage(
+      test('image size is scaled when maxHeight is set', () {
+        const Size imageSize = Size(500, 300);
+        const int maxHeight = 400;
+        final Size scaledSize = calculateSizeOfDownScaledImage(
             Size(imageSize.width, imageSize.height),
             null,
             maxHeight.toDouble());
@@ -43,11 +43,11 @@
         expect(scaledSize.width <= imageSize.width, true);
       });
 
-      test("image size is scaled when both maxWidth and maxHeight is set", () {
-        final imageSize = Size(1120, 2000);
-        final maxHeight = 1200;
-        final maxWidth = 99;
-        final scaledSize = calculateSizeOfDownScaledImage(
+      test('image size is scaled when both maxWidth and maxHeight is set', () {
+        const Size imageSize = Size(1120, 2000);
+        const int maxHeight = 1200;
+        const int maxWidth = 99;
+        final Size scaledSize = calculateSizeOfDownScaledImage(
             Size(imageSize.width, imageSize.height),
             maxWidth.toDouble(),
             maxHeight.toDouble());
@@ -55,34 +55,34 @@
         expect(scaledSize.width <= maxWidth, true);
       });
     });
-    group("imageResizeNeeded", () {
-      test("image needs to be resized when maxWidth is set", () {
+    group('imageResizeNeeded', () {
+      test('image needs to be resized when maxWidth is set', () {
         expect(imageResizeNeeded(50, null, null), true);
       });
 
-      test("image needs to be resized when maxHeight is set", () {
+      test('image needs to be resized when maxHeight is set', () {
         expect(imageResizeNeeded(null, 50, null), true);
       });
 
-      test("image needs to be resized  when imageQuality is set", () {
+      test('image needs to be resized  when imageQuality is set', () {
         expect(imageResizeNeeded(null, null, 100), true);
       });
 
-      test("image will not be resized when imageQuality is not valid", () {
+      test('image will not be resized when imageQuality is not valid', () {
         expect(imageResizeNeeded(null, null, 101), false);
         expect(imageResizeNeeded(null, null, -1), false);
       });
     });
 
-    group("isImageQualityValid", () {
-      test("image quality is valid in 0 to 100", () {
+    group('isImageQualityValid', () {
+      test('image quality is valid in 0 to 100', () {
         expect(isImageQualityValid(50), true);
         expect(isImageQualityValid(0), true);
         expect(isImageQualityValid(100), true);
       });
 
       test(
-          "image quality is not valid when imageQuality is less than 0 or greater than 100",
+          'image quality is not valid when imageQuality is less than 0 or greater than 100',
           () {
         expect(isImageQualityValid(-1), false);
         expect(isImageQualityValid(101), false);
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index d434b5d..13a6819 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -17,8 +17,6 @@
 - google_sign_in/google_sign_in
 - google_sign_in/google_sign_in_platform_interface
 - google_sign_in/google_sign_in_web
-- image_picker/image_picker
-- image_picker/image_picker_for_web
 - image_picker/image_picker_platform_interface
 - in_app_purchase/in_app_purchase
 - in_app_purchase/in_app_purchase_android