From f630f450f98725de3fcdf3ddac015b0376d51b94 Mon Sep 17 00:00:00 2001 From: devodevM Date: Mon, 29 Jul 2024 23:33:00 +0100 Subject: [PATCH] fix(ui): enforce LTR directionality for specific elements in RTL locales - Added Directionality widget with TextDirection.ltr for specific UI elements - Created LtrWrapper widget for consistent LTR application - Ensured compatibility across different language settings This update addresses the RTL compatibility issues and ensures consistent UI presentation in Arabic and other RTL languages. --- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../appinio_video_player/example/ios/Podfile | 2 +- .../example/ios/Podfile.lock | 33 +++-- .../ios/Runner.xcodeproj/project.pbxproj | 13 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../example/ios/Runner/Info.plist | 2 + .../appinio_video_player/example/pubspec.lock | 56 +++++--- .../lib/src/controls/control_bar.dart | 125 +++++++++--------- .../video_settings_dialog.dart | 104 ++++++++------- .../video_settings_playback_speed_dialog.dart | 100 +++++++------- packages/appinio_video_player/pubspec.lock | 56 +++++--- 11 files changed, 288 insertions(+), 207 deletions(-) diff --git a/packages/appinio_video_player/example/ios/Flutter/AppFrameworkInfo.plist b/packages/appinio_video_player/example/ios/Flutter/AppFrameworkInfo.plist index 8d4492f9..7c569640 100644 --- a/packages/appinio_video_player/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/appinio_video_player/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 12.0 diff --git a/packages/appinio_video_player/example/ios/Podfile b/packages/appinio_video_player/example/ios/Podfile index 1e8c3c90..279576f3 100644 --- a/packages/appinio_video_player/example/ios/Podfile +++ b/packages/appinio_video_player/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/packages/appinio_video_player/example/ios/Podfile.lock b/packages/appinio_video_player/example/ios/Podfile.lock index cafc2ed8..b1c6341a 100644 --- a/packages/appinio_video_player/example/ios/Podfile.lock +++ b/packages/appinio_video_player/example/ios/Podfile.lock @@ -1,22 +1,37 @@ PODS: - - Flutter (1.0.0) - - video_player_avfoundation (0.0.1): + - cached_video_player (0.0.2): - Flutter + - KTVHTTPCache (~> 2.0.0) + - CocoaAsyncSocket (7.6.5) + - Flutter (1.0.0) + - KTVCocoaHTTPServer (1.0.0): + - CocoaAsyncSocket + - KTVHTTPCache (2.0.1): + - KTVCocoaHTTPServer DEPENDENCIES: + - cached_video_player (from `.symlinks/plugins/cached_video_player/ios`) - Flutter (from `Flutter`) - - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/ios`) + +SPEC REPOS: + trunk: + - CocoaAsyncSocket + - KTVCocoaHTTPServer + - KTVHTTPCache EXTERNAL SOURCES: + cached_video_player: + :path: ".symlinks/plugins/cached_video_player/ios" Flutter: :path: Flutter - video_player_avfoundation: - :path: ".symlinks/plugins/video_player_avfoundation/ios" SPEC CHECKSUMS: - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a - video_player_avfoundation: e489aac24ef5cf7af82702979ed16f2a5ef84cff + cached_video_player: 9f225ed1c46bda0fe287b8288742329d441e2cc5 + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + KTVCocoaHTTPServer: df8d7b861e603ff8037e9b2138aca2563a6b768d + KTVHTTPCache: 588c3eb16f6bd1e6fde1e230dabfb7bd4e490a4d -PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c +PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011 -COCOAPODS: 1.11.2 +COCOAPODS: 1.15.2 diff --git a/packages/appinio_video_player/example/ios/Runner.xcodeproj/project.pbxproj b/packages/appinio_video_player/example/ios/Runner.xcodeproj/project.pbxproj index e51b0428..27ba1a35 100644 --- a/packages/appinio_video_player/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/appinio_video_player/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -200,10 +200,12 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -236,6 +238,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -340,7 +343,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -414,7 +417,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -463,7 +466,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/packages/appinio_video_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/appinio_video_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 3db53b6e..e67b2808 100644 --- a/packages/appinio_video_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/appinio_video_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + diff --git a/packages/appinio_video_player/example/pubspec.lock b/packages/appinio_video_player/example/pubspec.lock index 69127863..3b1458b8 100644 --- a/packages/appinio_video_player/example/pubspec.lock +++ b/packages/appinio_video_player/example/pubspec.lock @@ -95,6 +95,30 @@ packages: description: flutter source: sdk version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" lints: dependency: transitive description: @@ -107,34 +131,34 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.12.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" plugin_platform_interface: dependency: transitive description: @@ -192,10 +216,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" vector_math: dependency: transitive description: @@ -220,14 +244,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.15" - web: + vm_service: dependency: transitive description: - name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "14.2.1" sdks: - dart: ">=3.2.0-194.0.dev <4.0.0" - flutter: ">=3.0.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/packages/appinio_video_player/lib/src/controls/control_bar.dart b/packages/appinio_video_player/lib/src/controls/control_bar.dart index 6efbb02e..a3f05102 100644 --- a/packages/appinio_video_player/lib/src/controls/control_bar.dart +++ b/packages/appinio_video_player/lib/src/controls/control_bar.dart @@ -25,72 +25,75 @@ class CustomVideoPlayerControlBar extends StatelessWidget { .customVideoPlayerSettings.controlBarPadding, decoration: customVideoPlayerController .customVideoPlayerSettings.controlBarDecoration, - child: Row( - children: [ - if (customVideoPlayerController - .customVideoPlayerSettings.showMuteButton) - CustomVideoPlayerMuteButton( - customVideoPlayerController: customVideoPlayerController, - fadeOutOnPlay: fadeOutOnPlay, - ), - if (customVideoPlayerController - .customVideoPlayerSettings.showPlayButton) - CustomVideoPlayerPlayPauseButton( - customVideoPlayerController: customVideoPlayerController, - fadeOutOnPlay: fadeOutOnPlay, - ), - if (customVideoPlayerController - .customVideoPlayerSettings.showDurationPlayed) - Padding( - padding: const EdgeInsets.only( - left: 5.0, - right: 5.0, + child: Directionality( + textDirection: TextDirection.ltr, + child: Row( + children: [ + if (customVideoPlayerController + .customVideoPlayerSettings.showMuteButton) + CustomVideoPlayerMuteButton( + customVideoPlayerController: customVideoPlayerController, + fadeOutOnPlay: fadeOutOnPlay, ), - child: ValueListenableBuilder( - valueListenable: - customVideoPlayerController.videoProgressNotifier, - builder: ((context, progress, child) { - return Text( - getDurationAsString(progress), - style: customVideoPlayerController - .customVideoPlayerSettings.durationPlayedTextStyle, - ); - }), + if (customVideoPlayerController + .customVideoPlayerSettings.showPlayButton) + CustomVideoPlayerPlayPauseButton( + customVideoPlayerController: customVideoPlayerController, + fadeOutOnPlay: fadeOutOnPlay, ), - ), - Expanded( - child: CustomVideoPlayerProgressBar( - customVideoPlayerController: customVideoPlayerController, - ), - ), - if (customVideoPlayerController - .customVideoPlayerSettings.showDurationRemaining) - Padding( - padding: const EdgeInsets.only( - left: 5.0, - right: 5.0, + if (customVideoPlayerController + .customVideoPlayerSettings.showDurationPlayed) + Padding( + padding: const EdgeInsets.only( + left: 5.0, + right: 5.0, + ), + child: ValueListenableBuilder( + valueListenable: + customVideoPlayerController.videoProgressNotifier, + builder: ((context, progress, child) { + return Text( + getDurationAsString(progress), + style: customVideoPlayerController + .customVideoPlayerSettings.durationPlayedTextStyle, + ); + }), + ), ), - child: ValueListenableBuilder( - valueListenable: - customVideoPlayerController.videoProgressNotifier, - builder: ((context, progress, child) { - return Text( - "-" + - getDurationAsString(customVideoPlayerController - .videoPlayerController.value.duration - - progress), - style: customVideoPlayerController - .customVideoPlayerSettings.durationRemainingTextStyle, - ); - }), + Expanded( + child: CustomVideoPlayerProgressBar( + customVideoPlayerController: customVideoPlayerController, ), ), - if (customVideoPlayerController - .customVideoPlayerSettings.showFullscreenButton) - CustomVideoPlayerFullscreenButton( - customVideoPlayerController: customVideoPlayerController, - ) - ], + if (customVideoPlayerController + .customVideoPlayerSettings.showDurationRemaining) + Padding( + padding: const EdgeInsets.only( + left: 5.0, + right: 5.0, + ), + child: ValueListenableBuilder( + valueListenable: + customVideoPlayerController.videoProgressNotifier, + builder: ((context, progress, child) { + return Text( + "-" + + getDurationAsString(customVideoPlayerController + .videoPlayerController.value.duration - + progress), + style: customVideoPlayerController + .customVideoPlayerSettings.durationRemainingTextStyle, + ); + }), + ), + ), + if (customVideoPlayerController + .customVideoPlayerSettings.showFullscreenButton) + CustomVideoPlayerFullscreenButton( + customVideoPlayerController: customVideoPlayerController, + ) + ], + ), ), ); } diff --git a/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_dialog.dart b/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_dialog.dart index 5ef050df..e35014bc 100644 --- a/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_dialog.dart +++ b/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_dialog.dart @@ -1,11 +1,10 @@ +import 'package:appinio_video_player/appinio_video_player.dart'; import 'package:appinio_video_player/src/controls/video_settings_popup/video_settings_dialog_item.dart'; import 'package:appinio_video_player/src/controls/video_settings_popup/video_settings_playback_speed_dialog.dart'; import 'package:appinio_video_player/src/controls/video_settings_popup/video_settings_quality_dialog.dart'; import 'package:appinio_video_player/src/custom_video_player_controller.dart'; import 'package:flutter/material.dart'; -import 'package:appinio_video_player/appinio_video_player.dart'; - class VideoSettingsDialog extends StatelessWidget { final CustomVideoPlayerController customVideoPlayerController; final Function updateViewOnClose; @@ -23,57 +22,62 @@ class VideoSettingsDialog extends StatelessWidget { .customVideoPlayerPopupSettings.popupDecoration.borderRadius ?? BorderRadius.zero, ), - child: Container( - padding: customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupPadding, - width: customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupWidth, - decoration: customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupDecoration, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupTitle, - style: customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupTitleTextStyle, - ), - const SizedBox( - height: 8, - ), - Column( - children: [ - if (customVideoPlayerController.additionalVideoSources != null) - if (customVideoPlayerController - .additionalVideoSources!.isNotEmpty) - VideoSettingsDialogItem( - title: customVideoPlayerController - .customVideoPlayerSettings - .customVideoPlayerPopupSettings - .popupQualityTitle, - popupSettings: customVideoPlayerController - .customVideoPlayerSettings - .customVideoPlayerPopupSettings, - onPressed: () => _openSubSettingsDialog( - context: context, - isQuality: true, + child: Directionality( + textDirection: TextDirection.ltr, + child: Container( + padding: customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupPadding, + width: customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupWidth, + decoration: customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupDecoration, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupTitle, + style: customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupTitleTextStyle, + ), + const SizedBox( + height: 8, + ), + Column( + children: [ + if (customVideoPlayerController.additionalVideoSources != + null) + if (customVideoPlayerController + .additionalVideoSources!.isNotEmpty) + VideoSettingsDialogItem( + title: customVideoPlayerController + .customVideoPlayerSettings + .customVideoPlayerPopupSettings + .popupQualityTitle, + popupSettings: customVideoPlayerController + .customVideoPlayerSettings + .customVideoPlayerPopupSettings, + onPressed: () => _openSubSettingsDialog( + context: context, + isQuality: true, + ), ), + VideoSettingsDialogItem( + title: customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupPlaybackSpeedTitle, + popupSettings: customVideoPlayerController + .customVideoPlayerSettings + .customVideoPlayerPopupSettings, + onPressed: () => _openSubSettingsDialog( + context: context, + isQuality: false, ), - VideoSettingsDialogItem( - title: customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupPlaybackSpeedTitle, - popupSettings: customVideoPlayerController - .customVideoPlayerSettings.customVideoPlayerPopupSettings, - onPressed: () => _openSubSettingsDialog( - context: context, - isQuality: false, ), - ), - ], - ) - ], + ], + ) + ], + ), ), ), ); diff --git a/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_playback_speed_dialog.dart b/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_playback_speed_dialog.dart index 53e059d0..6924e5e1 100644 --- a/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_playback_speed_dialog.dart +++ b/packages/appinio_video_player/lib/src/controls/video_settings_popup/video_settings_playback_speed_dialog.dart @@ -39,54 +39,60 @@ class _VideoSettingsPlaybackSpeedDialogState .borderRadius ?? BorderRadius.zero, ), - child: Container( - padding: widget.customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupPadding, - width: widget.customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupWidth, - decoration: widget.customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupDecoration, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - widget.customVideoPlayerController.customVideoPlayerSettings - .customVideoPlayerPopupSettings.popupPlaybackSpeedTitle, - style: widget - .customVideoPlayerController - .customVideoPlayerSettings - .customVideoPlayerPopupSettings - .popupTitleTextStyle, - ), - const SizedBox( - height: 8, - ), - Flexible( - child: ListView( - shrinkWrap: true, - padding: const EdgeInsets.all(0), - controller: ScrollController(), - children: [ - for (double playbackSpeed in _playbackSpeeds) - VideoSettingsDialogItem( - title: playbackSpeed == 1.0 - ? "${playbackSpeed}x (${widget.customVideoPlayerController.customVideoPlayerSettings.customVideoPlayerPopupSettings.defaultPlaybackspeedDescription})" - : "${playbackSpeed}x", - popupSettings: widget - .customVideoPlayerController - .customVideoPlayerSettings - .customVideoPlayerPopupSettings, - onPressed: () => - _changeVideoPlayBackSpeed(context, playbackSpeed), - selected: widget.customVideoPlayerController - .playbackSpeedNotifier.value == - playbackSpeed, - ), - ], + child: Directionality( + textDirection: TextDirection.ltr, + child: Container( + padding: widget.customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupPadding, + width: widget.customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupWidth, + decoration: widget + .customVideoPlayerController + .customVideoPlayerSettings + .customVideoPlayerPopupSettings + .popupDecoration, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + widget.customVideoPlayerController.customVideoPlayerSettings + .customVideoPlayerPopupSettings.popupPlaybackSpeedTitle, + style: widget + .customVideoPlayerController + .customVideoPlayerSettings + .customVideoPlayerPopupSettings + .popupTitleTextStyle, ), - ) - ], + const SizedBox( + height: 8, + ), + Flexible( + child: ListView( + shrinkWrap: true, + padding: const EdgeInsets.all(0), + controller: ScrollController(), + children: [ + for (double playbackSpeed in _playbackSpeeds) + VideoSettingsDialogItem( + title: playbackSpeed == 1.0 + ? "${playbackSpeed}x (${widget.customVideoPlayerController.customVideoPlayerSettings.customVideoPlayerPopupSettings.defaultPlaybackspeedDescription})" + : "${playbackSpeed}x", + popupSettings: widget + .customVideoPlayerController + .customVideoPlayerSettings + .customVideoPlayerPopupSettings, + onPressed: () => + _changeVideoPlayBackSpeed(context, playbackSpeed), + selected: widget.customVideoPlayerController + .playbackSpeedNotifier.value == + playbackSpeed, + ), + ], + ), + ) + ], + ), ), ), ); diff --git a/packages/appinio_video_player/pubspec.lock b/packages/appinio_video_player/pubspec.lock index 915d6f18..4c0031b5 100644 --- a/packages/appinio_video_player/pubspec.lock +++ b/packages/appinio_video_player/pubspec.lock @@ -80,6 +80,30 @@ packages: description: flutter source: sdk version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" lints: dependency: transitive description: @@ -92,34 +116,34 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.12.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" plugin_platform_interface: dependency: transitive description: @@ -177,10 +201,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" vector_math: dependency: transitive description: @@ -205,14 +229,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.15" - web: + vm_service: dependency: transitive description: - name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "14.2.1" sdks: - dart: ">=3.2.0-194.0.dev <4.0.0" - flutter: ">=3.0.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54"