diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 3c824d5568c0..360b32680e1d 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -22,22 +22,29 @@ /** Generated class from Pigeon. */ @SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"}) public class Messages { + /** Generated class from Pigeon that represents data sent in messages. */ public static class TextureMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private TextureMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } @@ -69,37 +76,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class LoopingMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Boolean isLooping; + private @NonNull Boolean isLooping; - public @Nullable Boolean getIsLooping() { + public @NonNull Boolean getIsLooping() { return isLooping; } - public void setIsLooping(@Nullable Boolean setterArg) { + public void setIsLooping(@NonNull Boolean setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"isLooping\" is null."); + } this.isLooping = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private LoopingMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Boolean isLooping; - public @NonNull Builder setIsLooping(@Nullable Boolean setterArg) { + public @NonNull Builder setIsLooping(@NonNull Boolean setterArg) { this.isLooping = setterArg; return this; } @@ -135,37 +151,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class VolumeMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Double volume; + private @NonNull Double volume; - public @Nullable Double getVolume() { + public @NonNull Double getVolume() { return volume; } - public void setVolume(@Nullable Double setterArg) { + public void setVolume(@NonNull Double setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"volume\" is null."); + } this.volume = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private VolumeMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Double volume; - public @NonNull Builder setVolume(@Nullable Double setterArg) { + public @NonNull Builder setVolume(@NonNull Double setterArg) { this.volume = setterArg; return this; } @@ -201,37 +226,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class PlaybackSpeedMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Double speed; + private @NonNull Double speed; - public @Nullable Double getSpeed() { + public @NonNull Double getSpeed() { return speed; } - public void setSpeed(@Nullable Double setterArg) { + public void setSpeed(@NonNull Double setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"speed\" is null."); + } this.speed = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private PlaybackSpeedMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Double speed; - public @NonNull Builder setSpeed(@Nullable Double setterArg) { + public @NonNull Builder setSpeed(@NonNull Double setterArg) { this.speed = setterArg; return this; } @@ -267,37 +301,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class PositionMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Long position; + private @NonNull Long position; - public @Nullable Long getPosition() { + public @NonNull Long getPosition() { return position; } - public void setPosition(@Nullable Long setterArg) { + public void setPosition(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"position\" is null."); + } this.position = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private PositionMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Long position; - public @NonNull Builder setPosition(@Nullable Long setterArg) { + public @NonNull Builder setPosition(@NonNull Long setterArg) { this.position = setterArg; return this; } @@ -462,20 +505,26 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class MixWithOthersMessage { - private @Nullable Boolean mixWithOthers; + private @NonNull Boolean mixWithOthers; - public @Nullable Boolean getMixWithOthers() { + public @NonNull Boolean getMixWithOthers() { return mixWithOthers; } - public void setMixWithOthers(@Nullable Boolean setterArg) { + public void setMixWithOthers(@NonNull Boolean setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"mixWithOthers\" is null."); + } this.mixWithOthers = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private MixWithOthersMessage() {} + public static class Builder { private @Nullable Boolean mixWithOthers; - public @NonNull Builder setMixWithOthers(@Nullable Boolean setterArg) { + public @NonNull Builder setMixWithOthers(@NonNull Boolean setterArg) { this.mixWithOthers = setterArg; return this; } diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index d77b45e03d4b..168d90d8a57a 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -156,8 +156,7 @@ public TextureMessage create(CreateMessage arg) { } videoPlayers.put(handle.id(), player); - TextureMessage result = new TextureMessage(); - result.setTextureId(handle.id()); + TextureMessage result = new TextureMessage.Builder().setTextureId(handle.id()).build(); return result; } @@ -189,8 +188,11 @@ public void play(TextureMessage arg) { public PositionMessage position(TextureMessage arg) { VideoPlayer player = videoPlayers.get(arg.getTextureId()); - PositionMessage result = new PositionMessage(); - result.setPosition(player.getPosition()); + PositionMessage result = + new PositionMessage.Builder() + .setPosition(player.getPosition()) + .setTextureId(arg.getTextureId()) + .build(); player.sendBufferingUpdate(); return result; } diff --git a/packages/video_player/video_player_android/lib/src/android_video_player.dart b/packages/video_player/video_player_android/lib/src/android_video_player.dart index dfcf82af2a43..04183e12d5dd 100644 --- a/packages/video_player/video_player_android/lib/src/android_video_player.dart +++ b/packages/video_player/video_player_android/lib/src/android_video_player.dart @@ -105,7 +105,7 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { Future getPosition(int textureId) async { final PositionMessage response = await _api.position(TextureMessage(textureId: textureId)); - return Duration(milliseconds: response.position!); + return Duration(milliseconds: response.position); } @override diff --git a/packages/video_player/video_player_android/lib/src/messages.g.dart b/packages/video_player/video_player_android/lib/src/messages.g.dart index 810627771e7c..8370001846ea 100644 --- a/packages/video_player/video_player_android/lib/src/messages.g.dart +++ b/packages/video_player/video_player_android/lib/src/messages.g.dart @@ -13,10 +13,10 @@ import 'package:flutter/services.dart'; class TextureMessage { TextureMessage({ - this.textureId, + required this.textureId, }); - int? textureId; + int textureId; Object encode() { final Map pigeonMap = {}; @@ -27,19 +27,19 @@ class TextureMessage { static TextureMessage decode(Object message) { final Map pigeonMap = message as Map; return TextureMessage( - textureId: pigeonMap['textureId'] as int?, + textureId: pigeonMap['textureId']! as int, ); } } class LoopingMessage { LoopingMessage({ - this.textureId, - this.isLooping, + required this.textureId, + required this.isLooping, }); - int? textureId; - bool? isLooping; + int textureId; + bool isLooping; Object encode() { final Map pigeonMap = {}; @@ -51,20 +51,20 @@ class LoopingMessage { static LoopingMessage decode(Object message) { final Map pigeonMap = message as Map; return LoopingMessage( - textureId: pigeonMap['textureId'] as int?, - isLooping: pigeonMap['isLooping'] as bool?, + textureId: pigeonMap['textureId']! as int, + isLooping: pigeonMap['isLooping']! as bool, ); } } class VolumeMessage { VolumeMessage({ - this.textureId, - this.volume, + required this.textureId, + required this.volume, }); - int? textureId; - double? volume; + int textureId; + double volume; Object encode() { final Map pigeonMap = {}; @@ -76,20 +76,20 @@ class VolumeMessage { static VolumeMessage decode(Object message) { final Map pigeonMap = message as Map; return VolumeMessage( - textureId: pigeonMap['textureId'] as int?, - volume: pigeonMap['volume'] as double?, + textureId: pigeonMap['textureId']! as int, + volume: pigeonMap['volume']! as double, ); } } class PlaybackSpeedMessage { PlaybackSpeedMessage({ - this.textureId, - this.speed, + required this.textureId, + required this.speed, }); - int? textureId; - double? speed; + int textureId; + double speed; Object encode() { final Map pigeonMap = {}; @@ -101,20 +101,20 @@ class PlaybackSpeedMessage { static PlaybackSpeedMessage decode(Object message) { final Map pigeonMap = message as Map; return PlaybackSpeedMessage( - textureId: pigeonMap['textureId'] as int?, - speed: pigeonMap['speed'] as double?, + textureId: pigeonMap['textureId']! as int, + speed: pigeonMap['speed']! as double, ); } } class PositionMessage { PositionMessage({ - this.textureId, - this.position, + required this.textureId, + required this.position, }); - int? textureId; - int? position; + int textureId; + int position; Object encode() { final Map pigeonMap = {}; @@ -126,8 +126,8 @@ class PositionMessage { static PositionMessage decode(Object message) { final Map pigeonMap = message as Map; return PositionMessage( - textureId: pigeonMap['textureId'] as int?, - position: pigeonMap['position'] as int?, + textureId: pigeonMap['textureId']! as int, + position: pigeonMap['position']! as int, ); } } @@ -172,10 +172,10 @@ class CreateMessage { class MixWithOthersMessage { MixWithOthersMessage({ - this.mixWithOthers, + required this.mixWithOthers, }); - bool? mixWithOthers; + bool mixWithOthers; Object encode() { final Map pigeonMap = {}; @@ -186,7 +186,7 @@ class MixWithOthersMessage { static MixWithOthersMessage decode(Object message) { final Map pigeonMap = message as Map; return MixWithOthersMessage( - mixWithOthers: pigeonMap['mixWithOthers'] as bool?, + mixWithOthers: pigeonMap['mixWithOthers']! as bool, ); } } diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index 559c38d9fbaa..48ad97feb1ed 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -14,27 +14,32 @@ import 'package:pigeon/pigeon.dart'; copyrightHeader: 'pigeons/copyright.txt', )) class TextureMessage { - int? textureId; + TextureMessage(this.textureId); + int textureId; } class LoopingMessage { - int? textureId; - bool? isLooping; + LoopingMessage(this.textureId, this.isLooping); + int textureId; + bool isLooping; } class VolumeMessage { - int? textureId; - double? volume; + VolumeMessage(this.textureId, this.volume); + int textureId; + double volume; } class PlaybackSpeedMessage { - int? textureId; - double? speed; + PlaybackSpeedMessage(this.textureId, this.speed); + int textureId; + double speed; } class PositionMessage { - int? textureId; - int? position; + PositionMessage(this.textureId, this.position); + int textureId; + int position; } class CreateMessage { @@ -46,7 +51,8 @@ class CreateMessage { } class MixWithOthersMessage { - bool? mixWithOthers; + MixWithOthersMessage(this.mixWithOthers); + bool mixWithOthers; } @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') diff --git a/packages/video_player/video_player_android/test/android_video_player_test.dart b/packages/video_player/video_player_android/test/android_video_player_test.dart index c6769a3077e3..b7cf763e16a6 100644 --- a/packages/video_player/video_player_android/test/android_video_player_test.dart +++ b/packages/video_player/video_player_android/test/android_video_player_test.dart @@ -26,7 +26,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { TextureMessage create(CreateMessage arg) { log.add('create'); createMessage = arg; - return TextureMessage()..textureId = 3; + return TextureMessage(textureId: 3); } @override @@ -62,7 +62,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { PositionMessage position(TextureMessage arg) { log.add('position'); textureMessage = arg; - return PositionMessage()..position = 234; + return PositionMessage(textureId: arg.textureId, position: 234); } @override diff --git a/packages/video_player/video_player_android/test/test_api.dart b/packages/video_player/video_player_android/test/test_api.dart index 183ad38f2ecd..e8bc9d85283f 100644 --- a/packages/video_player/video_player_android/test/test_api.dart +++ b/packages/video_player/video_player_android/test/test_api.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. // Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon -// TODO(gaaclarke): `unnecessary_parenthesis had to be added manually. // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis // @dart = 2.12 import 'dart:async'; diff --git a/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m b/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m index d7044faf2332..ee9a5b80a943 100644 --- a/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m +++ b/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m @@ -33,9 +33,7 @@ - (void)testSeekToInvokesTextureFrameAvailableOnTextureRegistry { OCMStub([partialRegistrar textures]).andReturn(mockTextureRegistry); FLTVideoPlayerPlugin *videoPlayerPlugin = (FLTVideoPlayerPlugin *)[[FLTVideoPlayerPlugin alloc] initWithRegistrar:partialRegistrar]; - FLTPositionMessage *message = [[FLTPositionMessage alloc] init]; - message.textureId = @101; - message.position = @0; + FLTPositionMessage *message = [FLTPositionMessage makeWithTextureId:@101 position:@0]; FlutterError *error; [videoPlayerPlugin seekTo:message error:&error]; OCMVerify([mockTextureRegistry textureFrameAvailable:message.textureId.intValue]); @@ -152,18 +150,15 @@ - (void)testHLSControls { XCTAssertEqual(avPlayer.timeControlStatus, AVPlayerTimeControlStatusPaused); // Change playback speed. - FLTPlaybackSpeedMessage *playback = [[FLTPlaybackSpeedMessage alloc] init]; - playback.textureId = textureId; - playback.speed = @2; + FLTPlaybackSpeedMessage *playback = [FLTPlaybackSpeedMessage makeWithTextureId:textureId + speed:@2]; [videoPlayerPlugin setPlaybackSpeed:playback error:&error]; XCTAssertNil(error); XCTAssertEqual(avPlayer.rate, 2); XCTAssertEqual(avPlayer.timeControlStatus, AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate); // Volume - FLTVolumeMessage *volume = [[FLTVolumeMessage alloc] init]; - volume.textureId = textureId; - volume.volume = @(0.1); + FLTVolumeMessage *volume = [FLTVolumeMessage makeWithTextureId:textureId volume:@0.1]; [videoPlayerPlugin setVolume:volume error:&error]; XCTAssertNil(error); XCTAssertEqual(avPlayer.volume, 0.1f); diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m index 9203556b0649..fab744bcd5bc 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m @@ -544,8 +544,7 @@ - (FLTTextureMessage *)onPlayerSetup:(FLTVideoPlayer *)player [eventChannel setStreamHandler:player]; player.eventChannel = eventChannel; self.playersByTextureId[@(textureId)] = player; - FLTTextureMessage *result = [[FLTTextureMessage alloc] init]; - result.textureId = @(textureId); + FLTTextureMessage *result = [FLTTextureMessage makeWithTextureId:@(textureId)]; return result; } @@ -628,8 +627,8 @@ - (void)play:(FLTTextureMessage *)input error:(FlutterError **)error { - (FLTPositionMessage *)position:(FLTTextureMessage *)input error:(FlutterError **)error { FLTVideoPlayer *player = self.playersByTextureId[input.textureId]; - FLTPositionMessage *result = [[FLTPositionMessage alloc] init]; - result.position = @([player position]); + FLTPositionMessage *result = [FLTPositionMessage makeWithTextureId:input.textureId + position:@([player position])]; return result; } diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h index e9a9645f3b5a..d251c24e5108 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; @@ -20,34 +20,42 @@ NS_ASSUME_NONNULL_BEGIN @class FLTMixWithOthersMessage; @interface FLTTextureMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId; -@property(nonatomic, strong, nullable) NSNumber *textureId; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId; +@property(nonatomic, strong) NSNumber *textureId; @end @interface FLTLoopingMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - isLooping:(nullable NSNumber *)isLooping; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *isLooping; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId isLooping:(NSNumber *)isLooping; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *isLooping; @end @interface FLTVolumeMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId volume:(nullable NSNumber *)volume; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *volume; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId volume:(NSNumber *)volume; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *volume; @end @interface FLTPlaybackSpeedMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable NSNumber *)speed; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *speed; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId speed:(NSNumber *)speed; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *speed; @end @interface FLTPositionMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - position:(nullable NSNumber *)position; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *position; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId position:(NSNumber *)position; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *position; @end @interface FLTCreateMessage : NSObject @@ -64,8 +72,10 @@ NS_ASSUME_NONNULL_BEGIN @end @interface FLTMixWithOthersMessage : NSObject -+ (instancetype)makeWithMixWithOthers:(nullable NSNumber *)mixWithOthers; -@property(nonatomic, strong, nullable) NSNumber *mixWithOthers; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithMixWithOthers:(NSNumber *)mixWithOthers; +@property(nonatomic, strong) NSNumber *mixWithOthers; @end /// The codec used by FLTVideoPlayerApi. diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m index ce7f71d4a3a4..f5ec6670a697 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.g.h" #import @@ -24,6 +24,10 @@ @"error" : errorDict, }; } +static id GetNullableObject(NSDictionary *dict, id key) { + id result = dict[key]; + return (result == [NSNull null]) ? nil : result; +} @interface FLTTextureMessage () + (FLTTextureMessage *)fromMap:(NSDictionary *)dict; @@ -55,17 +59,15 @@ - (NSDictionary *)toMap; @end @implementation FLTTextureMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId { FLTTextureMessage *pigeonResult = [[FLTTextureMessage alloc] init]; pigeonResult.textureId = textureId; return pigeonResult; } + (FLTTextureMessage *)fromMap:(NSDictionary *)dict { FLTTextureMessage *pigeonResult = [[FLTTextureMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -76,8 +78,7 @@ - (NSDictionary *)toMap { @end @implementation FLTLoopingMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - isLooping:(nullable NSNumber *)isLooping { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId isLooping:(NSNumber *)isLooping { FLTLoopingMessage *pigeonResult = [[FLTLoopingMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.isLooping = isLooping; @@ -85,14 +86,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId } + (FLTLoopingMessage *)fromMap:(NSDictionary *)dict { FLTLoopingMessage *pigeonResult = [[FLTLoopingMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.isLooping = dict[@"isLooping"]; - if ((NSNull *)pigeonResult.isLooping == [NSNull null]) { - pigeonResult.isLooping = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.isLooping = GetNullableObject(dict, @"isLooping"); + NSAssert(pigeonResult.isLooping != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -104,8 +101,7 @@ - (NSDictionary *)toMap { @end @implementation FLTVolumeMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - volume:(nullable NSNumber *)volume { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId volume:(NSNumber *)volume { FLTVolumeMessage *pigeonResult = [[FLTVolumeMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.volume = volume; @@ -113,14 +109,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId } + (FLTVolumeMessage *)fromMap:(NSDictionary *)dict { FLTVolumeMessage *pigeonResult = [[FLTVolumeMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.volume = dict[@"volume"]; - if ((NSNull *)pigeonResult.volume == [NSNull null]) { - pigeonResult.volume = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.volume = GetNullableObject(dict, @"volume"); + NSAssert(pigeonResult.volume != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -131,7 +123,7 @@ - (NSDictionary *)toMap { @end @implementation FLTPlaybackSpeedMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable NSNumber *)speed { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId speed:(NSNumber *)speed { FLTPlaybackSpeedMessage *pigeonResult = [[FLTPlaybackSpeedMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.speed = speed; @@ -139,14 +131,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable } + (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict { FLTPlaybackSpeedMessage *pigeonResult = [[FLTPlaybackSpeedMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.speed = dict[@"speed"]; - if ((NSNull *)pigeonResult.speed == [NSNull null]) { - pigeonResult.speed = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.speed = GetNullableObject(dict, @"speed"); + NSAssert(pigeonResult.speed != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -157,8 +145,7 @@ - (NSDictionary *)toMap { @end @implementation FLTPositionMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - position:(nullable NSNumber *)position { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId position:(NSNumber *)position { FLTPositionMessage *pigeonResult = [[FLTPositionMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.position = position; @@ -166,14 +153,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId } + (FLTPositionMessage *)fromMap:(NSDictionary *)dict { FLTPositionMessage *pigeonResult = [[FLTPositionMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.position = dict[@"position"]; - if ((NSNull *)pigeonResult.position == [NSNull null]) { - pigeonResult.position = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.position = GetNullableObject(dict, @"position"); + NSAssert(pigeonResult.position != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -200,26 +183,11 @@ + (instancetype)makeWithAsset:(nullable NSString *)asset } + (FLTCreateMessage *)fromMap:(NSDictionary *)dict { FLTCreateMessage *pigeonResult = [[FLTCreateMessage alloc] init]; - pigeonResult.asset = dict[@"asset"]; - if ((NSNull *)pigeonResult.asset == [NSNull null]) { - pigeonResult.asset = nil; - } - pigeonResult.uri = dict[@"uri"]; - if ((NSNull *)pigeonResult.uri == [NSNull null]) { - pigeonResult.uri = nil; - } - pigeonResult.packageName = dict[@"packageName"]; - if ((NSNull *)pigeonResult.packageName == [NSNull null]) { - pigeonResult.packageName = nil; - } - pigeonResult.formatHint = dict[@"formatHint"]; - if ((NSNull *)pigeonResult.formatHint == [NSNull null]) { - pigeonResult.formatHint = nil; - } - pigeonResult.httpHeaders = dict[@"httpHeaders"]; - if ((NSNull *)pigeonResult.httpHeaders == [NSNull null]) { - pigeonResult.httpHeaders = nil; - } + pigeonResult.asset = GetNullableObject(dict, @"asset"); + pigeonResult.uri = GetNullableObject(dict, @"uri"); + pigeonResult.packageName = GetNullableObject(dict, @"packageName"); + pigeonResult.formatHint = GetNullableObject(dict, @"formatHint"); + pigeonResult.httpHeaders = GetNullableObject(dict, @"httpHeaders"); return pigeonResult; } - (NSDictionary *)toMap { @@ -236,17 +204,15 @@ - (NSDictionary *)toMap { @end @implementation FLTMixWithOthersMessage -+ (instancetype)makeWithMixWithOthers:(nullable NSNumber *)mixWithOthers { ++ (instancetype)makeWithMixWithOthers:(NSNumber *)mixWithOthers { FLTMixWithOthersMessage *pigeonResult = [[FLTMixWithOthersMessage alloc] init]; pigeonResult.mixWithOthers = mixWithOthers; return pigeonResult; } + (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict { FLTMixWithOthersMessage *pigeonResult = [[FLTMixWithOthersMessage alloc] init]; - pigeonResult.mixWithOthers = dict[@"mixWithOthers"]; - if ((NSNull *)pigeonResult.mixWithOthers == [NSNull null]) { - pigeonResult.mixWithOthers = nil; - } + pigeonResult.mixWithOthers = GetNullableObject(dict, @"mixWithOthers"); + NSAssert(pigeonResult.mixWithOthers != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -331,14 +297,14 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { @end NSObject *FLTVideoPlayerApiGetCodec() { - static dispatch_once_t s_pred = 0; - static FlutterStandardMessageCodec *s_sharedObject = nil; - dispatch_once(&s_pred, ^{ + static dispatch_once_t sPred = 0; + static FlutterStandardMessageCodec *sSharedObject = nil; + dispatch_once(&sPred, ^{ FLTVideoPlayerApiCodecReaderWriter *readerWriter = [[FLTVideoPlayerApiCodecReaderWriter alloc] init]; - s_sharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; + sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); - return s_sharedObject; + return sSharedObject; } void FLTVideoPlayerApiSetup(id binaryMessenger, diff --git a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart index 3fcaa1e2ffe3..3c1ec34b3758 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart @@ -105,7 +105,7 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { Future getPosition(int textureId) async { final PositionMessage response = await _api.position(TextureMessage(textureId: textureId)); - return Duration(milliseconds: response.position!); + return Duration(milliseconds: response.position); } @override diff --git a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart index 810627771e7c..f5f7e41327db 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name // @dart = 2.12 @@ -13,10 +13,10 @@ import 'package:flutter/services.dart'; class TextureMessage { TextureMessage({ - this.textureId, + required this.textureId, }); - int? textureId; + int textureId; Object encode() { final Map pigeonMap = {}; @@ -27,19 +27,19 @@ class TextureMessage { static TextureMessage decode(Object message) { final Map pigeonMap = message as Map; return TextureMessage( - textureId: pigeonMap['textureId'] as int?, + textureId: pigeonMap['textureId']! as int, ); } } class LoopingMessage { LoopingMessage({ - this.textureId, - this.isLooping, + required this.textureId, + required this.isLooping, }); - int? textureId; - bool? isLooping; + int textureId; + bool isLooping; Object encode() { final Map pigeonMap = {}; @@ -51,20 +51,20 @@ class LoopingMessage { static LoopingMessage decode(Object message) { final Map pigeonMap = message as Map; return LoopingMessage( - textureId: pigeonMap['textureId'] as int?, - isLooping: pigeonMap['isLooping'] as bool?, + textureId: pigeonMap['textureId']! as int, + isLooping: pigeonMap['isLooping']! as bool, ); } } class VolumeMessage { VolumeMessage({ - this.textureId, - this.volume, + required this.textureId, + required this.volume, }); - int? textureId; - double? volume; + int textureId; + double volume; Object encode() { final Map pigeonMap = {}; @@ -76,20 +76,20 @@ class VolumeMessage { static VolumeMessage decode(Object message) { final Map pigeonMap = message as Map; return VolumeMessage( - textureId: pigeonMap['textureId'] as int?, - volume: pigeonMap['volume'] as double?, + textureId: pigeonMap['textureId']! as int, + volume: pigeonMap['volume']! as double, ); } } class PlaybackSpeedMessage { PlaybackSpeedMessage({ - this.textureId, - this.speed, + required this.textureId, + required this.speed, }); - int? textureId; - double? speed; + int textureId; + double speed; Object encode() { final Map pigeonMap = {}; @@ -101,20 +101,20 @@ class PlaybackSpeedMessage { static PlaybackSpeedMessage decode(Object message) { final Map pigeonMap = message as Map; return PlaybackSpeedMessage( - textureId: pigeonMap['textureId'] as int?, - speed: pigeonMap['speed'] as double?, + textureId: pigeonMap['textureId']! as int, + speed: pigeonMap['speed']! as double, ); } } class PositionMessage { PositionMessage({ - this.textureId, - this.position, + required this.textureId, + required this.position, }); - int? textureId; - int? position; + int textureId; + int position; Object encode() { final Map pigeonMap = {}; @@ -126,8 +126,8 @@ class PositionMessage { static PositionMessage decode(Object message) { final Map pigeonMap = message as Map; return PositionMessage( - textureId: pigeonMap['textureId'] as int?, - position: pigeonMap['position'] as int?, + textureId: pigeonMap['textureId']! as int, + position: pigeonMap['position']! as int, ); } } @@ -172,10 +172,10 @@ class CreateMessage { class MixWithOthersMessage { MixWithOthersMessage({ - this.mixWithOthers, + required this.mixWithOthers, }); - bool? mixWithOthers; + bool mixWithOthers; Object encode() { final Map pigeonMap = {}; @@ -186,7 +186,7 @@ class MixWithOthersMessage { static MixWithOthersMessage decode(Object message) { final Map pigeonMap = message as Map; return MixWithOthersMessage( - mixWithOthers: pigeonMap['mixWithOthers'] as bool?, + mixWithOthers: pigeonMap['mixWithOthers']! as bool, ); } } diff --git a/packages/video_player/video_player_avfoundation/pigeons/messages.dart b/packages/video_player/video_player_avfoundation/pigeons/messages.dart index 02ea59c0bef8..bbb753867645 100644 --- a/packages/video_player/video_player_avfoundation/pigeons/messages.dart +++ b/packages/video_player/video_player_avfoundation/pigeons/messages.dart @@ -15,27 +15,32 @@ import 'package:pigeon/pigeon.dart'; copyrightHeader: 'pigeons/copyright.txt', )) class TextureMessage { - int? textureId; + TextureMessage(this.textureId); + int textureId; } class LoopingMessage { - int? textureId; - bool? isLooping; + LoopingMessage(this.textureId, this.isLooping); + int textureId; + bool isLooping; } class VolumeMessage { - int? textureId; - double? volume; + VolumeMessage(this.textureId, this.volume); + int textureId; + double volume; } class PlaybackSpeedMessage { - int? textureId; - double? speed; + PlaybackSpeedMessage(this.textureId, this.speed); + int textureId; + double speed; } class PositionMessage { - int? textureId; - int? position; + PositionMessage(this.textureId, this.position); + int textureId; + int position; } class CreateMessage { @@ -47,7 +52,8 @@ class CreateMessage { } class MixWithOthersMessage { - bool? mixWithOthers; + MixWithOthersMessage(this.mixWithOthers); + bool mixWithOthers; } @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') diff --git a/packages/video_player/video_player_avfoundation/pubspec.yaml b/packages/video_player/video_player_avfoundation/pubspec.yaml index e05864e5ef81..044d15b890b2 100644 --- a/packages/video_player/video_player_avfoundation/pubspec.yaml +++ b/packages/video_player/video_player_avfoundation/pubspec.yaml @@ -24,4 +24,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - pigeon: ^1.0.16 + pigeon: ^1.0.17 diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart index f13cb91453a8..9b6d1dfa195c 100644 --- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart +++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart @@ -26,7 +26,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { TextureMessage create(CreateMessage arg) { log.add('create'); createMessage = arg; - return TextureMessage()..textureId = 3; + return TextureMessage(textureId: 3); } @override @@ -62,7 +62,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { PositionMessage position(TextureMessage arg) { log.add('position'); textureMessage = arg; - return PositionMessage()..position = 234; + return PositionMessage(textureId: arg.textureId, position: 234); } @override diff --git a/packages/video_player/video_player_avfoundation/test/test_api.dart b/packages/video_player/video_player_avfoundation/test/test_api.dart index d4c37aad09ac..191358e23024 100644 --- a/packages/video_player/video_player_avfoundation/test/test_api.dart +++ b/packages/video_player/video_player_avfoundation/test/test_api.dart @@ -1,10 +1,10 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon -// TODO(gaaclarke): `unnecessary_parenthesis` had to be added manually. // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis +// ignore_for_file: avoid_relative_lib_imports // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List;