[various] Prepare plugin repo for binding API improvements (#4137)
diff --git a/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart b/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart
index 6a312ee..6975828 100644
--- a/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart
+++ b/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart
@@ -32,13 +32,14 @@
.setMockMethodCallHandler((MethodCall methodCall) async {
switch (methodCall.method) {
case 'listen':
- await ServicesBinding.instance!.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
.handlePlatformMessage(
- methodChannelBattery.eventChannel.name,
- methodChannelBattery.eventChannel.codec
- .encodeSuccessEnvelope('full'),
- (_) {},
- );
+ methodChannelBattery.eventChannel.name,
+ methodChannelBattery.eventChannel.codec
+ .encodeSuccessEnvelope('full'),
+ (_) {},
+ );
break;
case 'cancel':
default:
@@ -61,3 +62,10 @@
});
});
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;
diff --git a/packages/camera/camera/example/lib/main.dart b/packages/camera/camera/example/lib/main.dart
index 536e95d..16d585d 100644
--- a/packages/camera/camera/example/lib/main.dart
+++ b/packages/camera/camera/example/lib/main.dart
@@ -68,7 +68,7 @@
@override
void initState() {
super.initState();
- WidgetsBinding.instance?.addObserver(this);
+ _ambiguate(WidgetsBinding.instance)?.addObserver(this);
_flashModeControlRowAnimationController = AnimationController(
duration: const Duration(milliseconds: 300),
@@ -951,3 +951,10 @@
}
runApp(CameraApp());
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;
diff --git a/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart b/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart
index 38f4ac3..b69feae 100644
--- a/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart
+++ b/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart
@@ -42,13 +42,14 @@
.setMockMethodCallHandler((MethodCall methodCall) async {
switch (methodCall.method) {
case 'listen':
- await ServicesBinding.instance!.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
.handlePlatformMessage(
- methodChannelConnectivity.eventChannel.name,
- methodChannelConnectivity.eventChannel.codec
- .encodeSuccessEnvelope('wifi'),
- (_) {},
- );
+ methodChannelConnectivity.eventChannel.name,
+ methodChannelConnectivity.eventChannel.codec
+ .encodeSuccessEnvelope('wifi'),
+ (_) {},
+ );
break;
case 'cancel':
default:
@@ -151,3 +152,10 @@
});
});
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;
diff --git a/packages/sensors/test/sensors_test.dart b/packages/sensors/test/sensors_test.dart
index 659c658..bce3afe 100644
--- a/packages/sensors/test/sensors_test.dart
+++ b/packages/sensors/test/sensors_test.dart
@@ -52,14 +52,17 @@
const StandardMethodCodec standardMethod = StandardMethodCodec();
void _emitEvent(ByteData? event) {
- ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage(
- channelName,
- event,
- (ByteData? reply) {},
- );
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
+ .handlePlatformMessage(
+ channelName,
+ event,
+ (ByteData? reply) {},
+ );
}
- ServicesBinding.instance!.defaultBinaryMessenger
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
.setMockMessageHandler(channelName, (ByteData? message) async {
final MethodCall methodCall = standardMethod.decodeMethodCall(message);
if (methodCall.method == 'listen') {
@@ -73,3 +76,10 @@
}
});
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;
diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md
index 135057b..b082d1b 100644
--- a/packages/video_player/video_player/CHANGELOG.md
+++ b/packages/video_player/video_player/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.1.9
+
+* Silenced warnings that may occur during build when using a very
+ recent version of Flutter relating to null safety.
+
## 2.1.8
* Refactor `FLTCMTimeToMillis` to support indefinite streams. Fixes [#48670](https://github.com/flutter/flutter/issues/48670).
diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart
index d5bd7d2..1708d49 100644
--- a/packages/video_player/video_player/lib/video_player.dart
+++ b/packages/video_player/video_player/lib/video_player.dart
@@ -573,7 +573,7 @@
final VideoPlayerController _controller;
void initialize() {
- WidgetsBinding.instance!.addObserver(this);
+ _ambiguate(WidgetsBinding.instance)!.addObserver(this);
}
@override
@@ -593,7 +593,7 @@
}
void dispose() {
- WidgetsBinding.instance!.removeObserver(this);
+ _ambiguate(WidgetsBinding.instance)!.removeObserver(this);
}
}
@@ -949,3 +949,10 @@
);
}
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;
diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml
index cf03129..c24377f 100644
--- a/packages/video_player/video_player/pubspec.yaml
+++ b/packages/video_player/video_player/pubspec.yaml
@@ -3,7 +3,7 @@
widgets on Android, iOS, and web.
repository: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.1.8
+version: 2.1.9
environment:
sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
index 33a5b34..9da7161 100644
--- a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
+++ b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
@@ -232,13 +232,16 @@
});
test('videoEventsFor', () async {
- ServicesBinding.instance?.defaultBinaryMessenger.setMockMessageHandler(
+ _ambiguate(ServicesBinding.instance)
+ ?.defaultBinaryMessenger
+ .setMockMessageHandler(
"flutter.io/videoPlayer/videoEvents123",
(ByteData? message) async {
final MethodCall methodCall =
const StandardMethodCodec().decodeMethodCall(message);
if (methodCall.method == 'listen') {
- await ServicesBinding.instance?.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)
+ ?.defaultBinaryMessenger
.handlePlatformMessage(
"flutter.io/videoPlayer/videoEvents123",
const StandardMethodCodec()
@@ -250,7 +253,8 @@
}),
(ByteData? data) {});
- await ServicesBinding.instance?.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)
+ ?.defaultBinaryMessenger
.handlePlatformMessage(
"flutter.io/videoPlayer/videoEvents123",
const StandardMethodCodec()
@@ -259,7 +263,8 @@
}),
(ByteData? data) {});
- await ServicesBinding.instance?.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)
+ ?.defaultBinaryMessenger
.handlePlatformMessage(
"flutter.io/videoPlayer/videoEvents123",
const StandardMethodCodec()
@@ -272,7 +277,8 @@
}),
(ByteData? data) {});
- await ServicesBinding.instance?.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)
+ ?.defaultBinaryMessenger
.handlePlatformMessage(
"flutter.io/videoPlayer/videoEvents123",
const StandardMethodCodec()
@@ -281,7 +287,8 @@
}),
(ByteData? data) {});
- await ServicesBinding.instance?.defaultBinaryMessenger
+ await _ambiguate(ServicesBinding.instance)
+ ?.defaultBinaryMessenger
.handlePlatformMessage(
"flutter.io/videoPlayer/videoEvents123",
const StandardMethodCodec()
@@ -325,3 +332,10 @@
});
});
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;
diff --git a/packages/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/test/webview_flutter_test.dart
index 4360484..5efee6d 100644
--- a/packages/webview_flutter/test/webview_flutter_test.dart
+++ b/packages/webview_flutter/test/webview_flutter_test.dart
@@ -1019,7 +1019,8 @@
};
final ByteData data = codec
.encodeMethodCall(MethodCall('javascriptChannelMessage', arguments));
- ServicesBinding.instance!.defaultBinaryMessenger
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
.handlePlatformMessage(channel.name, data, (ByteData? data) {});
}
@@ -1038,7 +1039,8 @@
};
final ByteData data =
codec.encodeMethodCall(MethodCall('navigationRequest', arguments));
- ServicesBinding.instance!.defaultBinaryMessenger
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
.handlePlatformMessage(channel.name, data, (ByteData? data) {
final bool allow = codec.decodeEnvelope(data!);
if (allow) {
@@ -1055,11 +1057,13 @@
<dynamic, dynamic>{'url': currentUrl},
));
- ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage(
- channel.name,
- data,
- (ByteData? data) {},
- );
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
+ .handlePlatformMessage(
+ channel.name,
+ data,
+ (ByteData? data) {},
+ );
}
void fakeOnPageFinishedCallback() {
@@ -1070,11 +1074,13 @@
<dynamic, dynamic>{'url': currentUrl},
));
- ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage(
- channel.name,
- data,
- (ByteData? data) {},
- );
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
+ .handlePlatformMessage(
+ channel.name,
+ data,
+ (ByteData? data) {},
+ );
}
void fakeOnProgressCallback(int progress) {
@@ -1085,7 +1091,8 @@
<dynamic, dynamic>{'progress': progress},
));
- ServicesBinding.instance!.defaultBinaryMessenger
+ _ambiguate(ServicesBinding.instance)!
+ .defaultBinaryMessenger
.handlePlatformMessage(channel.name, data, (ByteData? data) {});
}
@@ -1244,3 +1251,10 @@
.matches(creationParams.javascriptChannelNames, matchState);
}
}
+
+/// This allows a value of type T or T? to be treated as a value of type T?.
+///
+/// We use this so that APIs that have become non-nullable can still be used
+/// with `!` and `?` on the stable branch.
+// TODO(ianh): Remove this once we roll stable in late 2021.
+T? _ambiguate<T>(T? value) => value;