[ios_platform_images] Switch to new analysis options (#4784)
diff --git a/packages/ios_platform_images/CHANGELOG.md b/packages/ios_platform_images/CHANGELOG.md
index 443be3f..416f936 100644
--- a/packages/ios_platform_images/CHANGELOG.md
+++ b/packages/ios_platform_images/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.2.0+4
+
+* Internal code cleanup for stricter analysis options.
+
## 0.2.0+3
* Internal fix for unused field formal parameter.
diff --git a/packages/ios_platform_images/analysis_options.yaml b/packages/ios_platform_images/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/ios_platform_images/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/ios_platform_images/example/lib/main.dart b/packages/ios_platform_images/example/lib/main.dart
index 1546edc..ecdfeb2 100644
--- a/packages/ios_platform_images/example/lib/main.dart
+++ b/packages/ios_platform_images/example/lib/main.dart
@@ -18,7 +18,8 @@
void initState() {
super.initState();
- IosPlatformImages.resolveURL("textfile").then((value) => print(value));
+ IosPlatformImages.resolveURL('textfile')
+ .then((String? value) => print(value));
}
@override
@@ -31,7 +32,7 @@
body: Center(
// "flutter" is a resource in Assets.xcassets.
child: Image(
- image: IosPlatformImages.load("flutter"),
+ image: IosPlatformImages.load('flutter'),
semanticLabel: 'Flutter logo',
),
),
diff --git a/packages/ios_platform_images/example/pubspec.yaml b/packages/ios_platform_images/example/pubspec.yaml
index 97241b6..aa8fea5 100644
--- a/packages/ios_platform_images/example/pubspec.yaml
+++ b/packages/ios_platform_images/example/pubspec.yaml
@@ -7,11 +7,10 @@
flutter: ">=2.5.0"
dependencies:
+ cupertino_icons: ^1.0.2
flutter:
sdk: flutter
- cupertino_icons: ^1.0.2
-
dev_dependencies:
flutter_test:
sdk: flutter
@@ -22,7 +21,6 @@
# 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: ../
- pedantic: ^1.10.0
flutter:
uses-material-design: true
diff --git a/packages/ios_platform_images/example/test/widget_test.dart b/packages/ios_platform_images/example/test/widget_test.dart
index 09fa35c..18e9e65 100644
--- a/packages/ios_platform_images/example/test/widget_test.dart
+++ b/packages/ios_platform_images/example/test/widget_test.dart
@@ -14,11 +14,10 @@
// Build our app and trigger a frame.
await tester.pumpWidget(MyApp());
- // Verify that platform version is retrieved.
expect(
find.byWidgetPredicate(
(Widget widget) =>
- widget is Image && (Platform.isIOS ? widget.image != null : true),
+ widget is Image && (!Platform.isIOS || widget.image != null),
),
findsOneWidget,
);
diff --git a/packages/ios_platform_images/lib/ios_platform_images.dart b/packages/ios_platform_images/lib/ios_platform_images.dart
index 856562c..23a437d 100644
--- a/packages/ios_platform_images/lib/ios_platform_images.dart
+++ b/packages/ios_platform_images/lib/ios_platform_images.dart
@@ -6,18 +6,18 @@
import 'dart:typed_data';
import 'dart:ui' as ui;
+import 'package:flutter/foundation.dart'
+ show SynchronousFuture, describeIdentity, immutable, objectRuntimeType;
+import 'package:flutter/painting.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
-import 'package:flutter/painting.dart';
-import 'package:flutter/foundation.dart'
- show SynchronousFuture, describeIdentity;
class _FutureImageStreamCompleter extends ImageStreamCompleter {
_FutureImageStreamCompleter({
required Future<ui.Codec> codec,
required this.futureScale,
}) {
- codec.then<void>(_onCodecReady, onError: (dynamic error, StackTrace stack) {
+ codec.then<void>(_onCodecReady, onError: (Object error, StackTrace stack) {
reportError(
context: ErrorDescription('resolving a single-frame image stream'),
exception: error,
@@ -31,8 +31,8 @@
Future<void> _onCodecReady(ui.Codec codec) async {
try {
- ui.FrameInfo nextFrame = await codec.getNextFrame();
- double scale = await futureScale;
+ final ui.FrameInfo nextFrame = await codec.getNextFrame();
+ final double scale = await futureScale;
setImage(ImageInfo(image: nextFrame.image, scale: scale));
} catch (exception, stack) {
reportError(
@@ -47,6 +47,7 @@
/// Performs exactly like a [MemoryImage] but instead of taking in bytes it takes
/// in a future that represents bytes.
+@immutable
class _FutureMemoryImage extends ImageProvider<_FutureMemoryImage> {
/// Constructor for FutureMemoryImage. [_futureBytes] is the bytes that will
/// be loaded into an image and [_futureScale] is the scale that will be applied to
@@ -83,11 +84,13 @@
/// See [ImageProvider.operator==].
@override
- bool operator ==(dynamic other) {
- if (other.runtimeType != runtimeType) return false;
- final _FutureMemoryImage typedOther = other;
- return _futureBytes == typedOther._futureBytes &&
- _futureScale == typedOther._futureScale;
+ bool operator ==(Object other) {
+ if (other.runtimeType != runtimeType) {
+ return false;
+ }
+ return other is _FutureMemoryImage &&
+ _futureBytes == other._futureBytes &&
+ _futureScale == other._futureScale;
}
/// See [ImageProvider.hashCode].
@@ -96,10 +99,11 @@
/// See [ImageProvider.toString].
@override
- String toString() =>
- '$runtimeType(${describeIdentity(_futureBytes)}, scale: $_futureScale)';
+ String toString() => '${objectRuntimeType(this, '_FutureMemoryImage')}'
+ '(${describeIdentity(_futureBytes)}, scale: $_futureScale)';
}
+// ignore: avoid_classes_with_only_static_members
/// Class to help loading of iOS platform images into Flutter.
///
/// For example, loading an image that is in `Assets.xcassts`.
@@ -114,10 +118,11 @@
///
/// See [https://developer.apple.com/documentation/uikit/uiimage/1624146-imagenamed?language=objc]
static ImageProvider load(String name) {
- Future<Map?> loadInfo = _channel.invokeMapMethod('loadImage', name);
- Completer<Uint8List> bytesCompleter = Completer<Uint8List>();
- Completer<double> scaleCompleter = Completer<double>();
- loadInfo.then((map) {
+ final Future<Map<String, dynamic>?> loadInfo =
+ _channel.invokeMapMethod<String, dynamic>('loadImage', name);
+ final Completer<Uint8List> bytesCompleter = Completer<Uint8List>();
+ final Completer<double> scaleCompleter = Completer<double>();
+ loadInfo.then((Map<String, dynamic>? map) {
if (map == null) {
scaleCompleter.completeError(
Exception("Image couldn't be found: $name"),
@@ -127,8 +132,8 @@
);
return;
}
- scaleCompleter.complete(map["scale"]);
- bytesCompleter.complete(map["data"]);
+ scaleCompleter.complete(map['scale']! as double);
+ bytesCompleter.complete(map['data']! as Uint8List);
});
return _FutureMemoryImage(bytesCompleter.future, scaleCompleter.future);
}
@@ -140,6 +145,7 @@
///
/// See [https://developer.apple.com/documentation/foundation/nsbundle/1411540-urlforresource?language=objc]
static Future<String?> resolveURL(String name, {String? extension}) {
- return _channel.invokeMethod<String>('resolveURL', [name, extension]);
+ return _channel
+ .invokeMethod<String>('resolveURL', <Object?>[name, extension]);
}
}
diff --git a/packages/ios_platform_images/pubspec.yaml b/packages/ios_platform_images/pubspec.yaml
index d5aa9ee..fe7952a 100644
--- a/packages/ios_platform_images/pubspec.yaml
+++ b/packages/ios_platform_images/pubspec.yaml
@@ -2,7 +2,7 @@
description: A plugin to share images between Flutter and iOS in add-to-app setups.
repository: https://github.com/flutter/plugins/tree/main/packages/ios_platform_images
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+ios_platform_images%22
-version: 0.2.0+3
+version: 0.2.0+4
environment:
sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/ios_platform_images/test/ios_platform_images_test.dart b/packages/ios_platform_images/test/ios_platform_images_test.dart
index a896e3d..76b0120 100644
--- a/packages/ios_platform_images/test/ios_platform_images_test.dart
+++ b/packages/ios_platform_images/test/ios_platform_images_test.dart
@@ -23,6 +23,6 @@
});
test('resolveURL', () async {
- expect(await IosPlatformImages.resolveURL("foobar"), '42');
+ expect(await IosPlatformImages.resolveURL('foobar'), '42');
});
}
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index 721e2ef..7ef7969 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -25,7 +25,6 @@
- in_app_purchase/in_app_purchase
- in_app_purchase/in_app_purchase_android
- in_app_purchase/in_app_purchase_storekit
-- ios_platform_images
- video_player/video_player
- video_player/video_player_platform_interface
- video_player/video_player_web