[image_picker] Update platform interface analysis options (#4837)
diff --git a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
index 8f80610..9f6d174 100644
--- a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
+++ b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.4.4
+
+* Internal code cleanup for stricter analysis options.
+
## 2.4.3
* Removes dependency on `meta`.
diff --git a/packages/image_picker/image_picker_platform_interface/analysis_options.yaml b/packages/image_picker/image_picker_platform_interface/analysis_options.yaml
deleted file mode 100644
index 5aeb4e7..0000000
--- a/packages/image_picker/image_picker_platform_interface/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../../analysis_options_legacy.yaml
diff --git a/packages/image_picker/image_picker_platform_interface/lib/image_picker_platform_interface.dart b/packages/image_picker/image_picker_platform_interface/lib/image_picker_platform_interface.dart
index 133c05e..bdc1686 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/image_picker_platform_interface.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/image_picker_platform_interface.dart
@@ -2,6 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+export 'package:cross_file/cross_file.dart';
export 'package:image_picker_platform_interface/src/platform_interface/image_picker_platform.dart';
export 'package:image_picker_platform_interface/src/types/types.dart';
-export 'package:cross_file/cross_file.dart';
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart b/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart
index 3731c56..e1e6082 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart
@@ -9,7 +9,7 @@
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
-final MethodChannel _channel = MethodChannel('plugins.flutter.io/image_picker');
+const MethodChannel _channel = MethodChannel('plugins.flutter.io/image_picker');
/// An implementation of [ImagePickerPlatform] that uses method channels.
class MethodChannelImagePicker extends ImagePickerPlatform {
@@ -25,7 +25,7 @@
int? imageQuality,
CameraDevice preferredCameraDevice = CameraDevice.rear,
}) async {
- String? path = await _getImagePath(
+ final String? path = await _getImagePath(
source: source,
maxWidth: maxWidth,
maxHeight: maxHeight,
@@ -46,9 +46,11 @@
maxHeight: maxHeight,
imageQuality: imageQuality,
);
- if (paths == null) return null;
+ if (paths == null) {
+ return null;
+ }
- return paths.map((path) => PickedFile(path)).toList();
+ return paths.map((dynamic path) => PickedFile(path as String)).toList();
}
Future<List<dynamic>?> _getMultiImagePath({
@@ -151,7 +153,7 @@
assert(result.containsKey('path') != result.containsKey('errorCode'));
- final String? type = result['type'];
+ final String? type = result['type'] as String?;
assert(type == kTypeImage || type == kTypeVideo);
RetrieveType? retrieveType;
@@ -164,10 +166,11 @@
PlatformException? exception;
if (result.containsKey('errorCode')) {
exception = PlatformException(
- code: result['errorCode'], message: result['errorMessage']);
+ code: result['errorCode']! as String,
+ message: result['errorMessage'] as String?);
}
- final String? path = result['path'];
+ final String? path = result['path'] as String?;
return LostData(
file: path != null ? PickedFile(path) : null,
@@ -184,7 +187,7 @@
int? imageQuality,
CameraDevice preferredCameraDevice = CameraDevice.rear,
}) async {
- String? path = await _getImagePath(
+ final String? path = await _getImagePath(
source: source,
maxWidth: maxWidth,
maxHeight: maxHeight,
@@ -205,9 +208,11 @@
maxHeight: maxHeight,
imageQuality: imageQuality,
);
- if (paths == null) return null;
+ if (paths == null) {
+ return null;
+ }
- return paths.map((path) => XFile(path)).toList();
+ return paths.map((dynamic path) => XFile(path as String)).toList();
}
@override
@@ -228,7 +233,7 @@
Future<LostDataResponse> getLostData() async {
List<XFile>? pickedFileList;
- Map<String, dynamic>? result =
+ final Map<String, dynamic>? result =
await _channel.invokeMapMethod<String, dynamic>('retrieve');
if (result == null) {
@@ -237,7 +242,7 @@
assert(result.containsKey('path') != result.containsKey('errorCode'));
- final String? type = result['type'];
+ final String? type = result['type'] as String?;
assert(type == kTypeImage || type == kTypeVideo);
RetrieveType? retrieveType;
@@ -250,15 +255,17 @@
PlatformException? exception;
if (result.containsKey('errorCode')) {
exception = PlatformException(
- code: result['errorCode'], message: result['errorMessage']);
+ code: result['errorCode']! as String,
+ message: result['errorMessage'] as String?);
}
- final String? path = result['path'];
+ final String? path = result['path'] as String?;
- final pathList = result['pathList'];
+ final List<String>? pathList =
+ (result['pathList'] as List<dynamic>?)?.cast<String>();
if (pathList != null) {
- pickedFileList = [];
- for (String path in pathList) {
+ pickedFileList = <XFile>[];
+ for (final String path in pathList) {
pickedFileList.add(XFile(path));
}
}
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart b/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart
index dbc8d89..8f02e16 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart
@@ -5,9 +5,9 @@
import 'dart:async';
import 'package:cross_file/cross_file.dart';
-import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:image_picker_platform_interface/src/method_channel/method_channel_image_picker.dart';
import 'package:image_picker_platform_interface/src/types/types.dart';
+import 'package:plugin_platform_interface/plugin_platform_interface.dart';
/// The interface that implementations of image_picker must implement.
///
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/base.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/base.dart
index d63bc6a..77bf87c 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/base.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/base.dart
@@ -18,7 +18,8 @@
@immutable
abstract class PickedFileBase {
/// Construct a PickedFile
- PickedFileBase(String path);
+ // ignore: avoid_unused_constructor_parameters
+ const PickedFileBase(String path);
/// Get the path of the picked file.
///
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart
index 24e1931..7d9761a 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart
@@ -13,20 +13,21 @@
///
/// It wraps the bytes of a selected file.
class PickedFile extends PickedFileBase {
- final String path;
- final Uint8List? _initBytes;
-
/// Construct a PickedFile object from its ObjectUrl.
///
/// Optionally, this can be initialized with `bytes`
/// so no http requests are performed to retrieve files later.
- PickedFile(this.path, {Uint8List? bytes})
+ const PickedFile(this.path, {Uint8List? bytes})
: _initBytes = bytes,
super(path);
+ @override
+ final String path;
+ final Uint8List? _initBytes;
+
Future<Uint8List> get _bytes async {
if (_initBytes != null) {
- return Future.value(UnmodifiableUint8ListView(_initBytes!));
+ return Future<Uint8List>.value(UnmodifiableUint8ListView(_initBytes!));
}
return http.readBytes(Uri.parse(path));
}
@@ -38,12 +39,12 @@
@override
Future<Uint8List> readAsBytes() async {
- return Future.value(await _bytes);
+ return Future<Uint8List>.value(await _bytes);
}
@override
Stream<Uint8List> openRead([int? start, int? end]) async* {
- final bytes = await _bytes;
+ final Uint8List bytes = await _bytes;
yield bytes.sublist(start ?? 0, end ?? bytes.length);
}
}
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/io.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/io.dart
index 7037b6b..500cc65 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/io.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/io.dart
@@ -10,13 +10,13 @@
/// A PickedFile backed by a dart:io File.
class PickedFile extends PickedFileBase {
- final File _file;
-
/// Construct a PickedFile object backed by a dart:io File.
PickedFile(String path)
: _file = File(path),
super(path);
+ final File _file;
+
@override
String get path {
return _file.path;
@@ -36,6 +36,6 @@
Stream<Uint8List> openRead([int? start, int? end]) {
return _file
.openRead(start ?? 0, end)
- .map((chunk) => Uint8List.fromList(chunk));
+ .map((List<int> chunk) => Uint8List.fromList(chunk));
}
}
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart
index ad7cd3f..7f28442 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart
@@ -4,9 +4,9 @@
export 'camera_device.dart';
export 'image_source.dart';
-export 'retrieve_type.dart';
-export 'picked_file/picked_file.dart';
export 'lost_data_response.dart';
+export 'picked_file/picked_file.dart';
+export 'retrieve_type.dart';
/// Denotes that an image is being picked.
const String kTypeImage = 'image';
diff --git a/packages/image_picker/image_picker_platform_interface/pubspec.yaml b/packages/image_picker/image_picker_platform_interface/pubspec.yaml
index 0dfe2c0..54fd17e 100644
--- a/packages/image_picker/image_picker_platform_interface/pubspec.yaml
+++ b/packages/image_picker/image_picker_platform_interface/pubspec.yaml
@@ -4,20 +4,19 @@
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 2.4.3
+version: 2.4.4
environment:
sdk: ">=2.12.0 <3.0.0"
flutter: ">=2.0.0"
dependencies:
+ cross_file: ^0.3.1+1
flutter:
sdk: flutter
http: ^0.13.0
plugin_platform_interface: ^2.1.0
- cross_file: ^0.3.1+1
dev_dependencies:
flutter_test:
sdk: flutter
- pedantic: ^1.10.0
diff --git a/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart b/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
index 17caa84..79d971f 100644
--- a/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
+++ b/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
@@ -12,7 +12,7 @@
TestWidgetsFlutterBinding.ensureInitialized();
group('$MethodChannelImagePicker', () {
- MethodChannelImagePicker picker = MethodChannelImagePicker();
+ final MethodChannelImagePicker picker = MethodChannelImagePicker();
final List<MethodCall> log = <MethodCall>[];
dynamic returnValue = '';
@@ -223,7 +223,7 @@
group('#pickMultiImage', () {
test('calls the method correctly', () async {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
await picker.pickMultiImage();
expect(
@@ -239,7 +239,7 @@
});
test('passes the width and height arguments correctly', () async {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
await picker.pickMultiImage();
await picker.pickMultiImage(
maxWidth: 10.0,
@@ -308,7 +308,7 @@
});
test('does not accept a negative width or height argument', () {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
expect(
() => picker.pickMultiImage(maxWidth: -1.0),
throwsArgumentError,
@@ -321,7 +321,7 @@
});
test('does not accept a invalid imageQuality argument', () {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
expect(
() => picker.pickMultiImage(imageQuality: -1),
throwsArgumentError,
@@ -691,7 +691,7 @@
group('#getMultiImage', () {
test('calls the method correctly', () async {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
await picker.getMultiImage();
expect(
@@ -707,7 +707,7 @@
});
test('passes the width and height arguments correctly', () async {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
await picker.getMultiImage();
await picker.getMultiImage(
maxWidth: 10.0,
@@ -776,7 +776,7 @@
});
test('does not accept a negative width or height argument', () {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
expect(
() => picker.getMultiImage(maxWidth: -1.0),
throwsArgumentError,
@@ -789,7 +789,7 @@
});
test('does not accept a invalid imageQuality argument', () {
- returnValue = ['0', '1'];
+ returnValue = <dynamic>['0', '1'];
expect(
() => picker.getMultiImage(imageQuality: -1),
throwsArgumentError,
@@ -934,7 +934,7 @@
return <String, dynamic>{
'type': 'image',
'path': '/example/path1',
- 'pathList': ['/example/path0', '/example/path1'],
+ 'pathList': <dynamic>['/example/path0', '/example/path1'],
};
});
final LostDataResponse response = await picker.getLostData();
diff --git a/packages/image_picker/image_picker_platform_interface/test/picked_file_html_test.dart b/packages/image_picker/image_picker_platform_interface/test/picked_file_html_test.dart
index 7721f66..1723337 100644
--- a/packages/image_picker/image_picker_platform_interface/test/picked_file_html_test.dart
+++ b/packages/image_picker/image_picker_platform_interface/test/picked_file_html_test.dart
@@ -10,14 +10,14 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
-final String expectedStringContents = 'Hello, world!';
+const String expectedStringContents = 'Hello, world!';
final List<int> bytes = utf8.encode(expectedStringContents);
-final html.File textFile = html.File([bytes], 'hello.txt');
+final html.File textFile = html.File(<List<int>>[bytes], 'hello.txt');
final String textFileUrl = html.Url.createObjectUrl(textFile);
void main() {
group('Create with an objectUrl', () {
- final pickedFile = PickedFile(textFileUrl);
+ final PickedFile pickedFile = PickedFile(textFileUrl);
test('Can be read as a string', () async {
expect(await pickedFile.readAsString(), equals(expectedStringContents));
diff --git a/packages/image_picker/image_picker_platform_interface/test/picked_file_io_test.dart b/packages/image_picker/image_picker_platform_interface/test/picked_file_io_test.dart
index d366204..3201d3a 100644
--- a/packages/image_picker/image_picker_platform_interface/test/picked_file_io_test.dart
+++ b/packages/image_picker/image_picker_platform_interface/test/picked_file_io_test.dart
@@ -11,10 +11,10 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
-final pathPrefix =
+final String pathPrefix =
Directory.current.path.endsWith('test') ? './assets/' : './test/assets/';
-final path = pathPrefix + 'hello.txt';
-final String expectedStringContents = 'Hello, world!';
+final String path = pathPrefix + 'hello.txt';
+const String expectedStringContents = 'Hello, world!';
final Uint8List bytes = Uint8List.fromList(utf8.encode(expectedStringContents));
final File textFile = File(path);
final String textFilePath = textFile.path;
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index 13a6819..b802db1 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -17,7 +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_platform_interface
- in_app_purchase/in_app_purchase
- in_app_purchase/in_app_purchase_android
- in_app_purchase/in_app_purchase_storekit