From 1893ebc968095565f5869c8b54a69bd935729580 Mon Sep 17 00:00:00 2001 From: Temur Date: Fri, 7 Jun 2024 12:01:32 +0500 Subject: [PATCH] fix auto video player dispose --- lib/pages/chat/events/video_player.dart | 16 ++++++---- pubspec.lock | 42 ++++++++++++------------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart index 1b0983bd4..ca3beb6c1 100644 --- a/lib/pages/chat/events/video_player.dart +++ b/lib/pages/chat/events/video_player.dart @@ -20,6 +20,7 @@ import '../../../utils/error_reporter.dart'; class EventVideoPlayer extends StatefulWidget { final Event event; + const EventVideoPlayer(this.event, {super.key}); @override @@ -28,6 +29,7 @@ class EventVideoPlayer extends StatefulWidget { class EventVideoPlayerState extends State { ChewieController? _chewieManager; + VideoPlayerController? _videoPlayerController; bool _isDownloading = false; String? _networkUri; File? _tmpFile; @@ -57,16 +59,17 @@ class EventVideoPlayerState extends State { final tmpFile = _tmpFile; final networkUri = _networkUri; if (kIsWeb && networkUri != null && _chewieManager == null) { + _videoPlayerController = VideoPlayerController.networkUrl(Uri.parse(networkUri)); _chewieManager ??= ChewieController( - videoPlayerController: - VideoPlayerController.networkUrl(Uri.parse(networkUri)), + videoPlayerController: _videoPlayerController!, autoPlay: true, autoInitialize: true, ); } else if (!kIsWeb && tmpFile != null && _chewieManager == null) { + _videoPlayerController = VideoPlayerController.file(tmpFile); _chewieManager ??= ChewieController( useRootNavigator: false, - videoPlayerController: VideoPlayerController.file(tmpFile), + videoPlayerController: _videoPlayerController!, autoPlay: true, autoInitialize: true, ); @@ -89,6 +92,7 @@ class EventVideoPlayerState extends State { @override void dispose() { _chewieManager?.dispose(); + _videoPlayerController?.dispose(); super.dispose(); } @@ -97,9 +101,9 @@ class EventVideoPlayerState extends State { @override Widget build(BuildContext context) { final hasThumbnail = widget.event.hasThumbnail; - final blurHash = (widget.event.infoMap as Map) - .tryGet('xyz.amorgan.blurhash') ?? - fallbackBlurHash; + final blurHash = + (widget.event.infoMap as Map).tryGet('xyz.amorgan.blurhash') ?? + fallbackBlurHash; final chewieManager = _chewieManager; return Material( diff --git a/pubspec.lock b/pubspec.lock index 532795288..18e67e36e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -333,10 +333,10 @@ packages: dependency: "direct main" description: name: emoji_picker_flutter - sha256: "839200a2bd1af9a65d71133a5a246dbf5b24f7e4f6f4c5390130c2e0ed5f85af" + sha256: "7c6681783e06710608df27be0e38aa4ba73ca1ccac370bb0e7a1320723ae4bca" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.1" emoji_proposal: dependency: "direct main" description: @@ -1017,10 +1017,10 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.18.1" io: dependency: transitive description: @@ -1090,26 +1090,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.0" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "2.0.1" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "2.0.1" license_checker: dependency: "direct dev" description: @@ -1218,10 +1218,10 @@ packages: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.11.0" mgrs_dart: dependency: transitive description: @@ -1991,26 +1991,26 @@ packages: dependency: transitive description: name: test - sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073" + sha256: a1f7595805820fcc05e5c52e3a231aedd0b72972cb333e8c738a8b1239448b6f url: "https://pub.dev" source: hosted - version: "1.25.2" + version: "1.24.9" test_api: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.6.1" test_core: dependency: transitive description: name: test_core - sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4" + sha256: a757b14fc47507060a162cc2530d9a4a2f92f5100a952c7443b5cad5ef5b106a url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.5.9" timezone: dependency: transitive description: @@ -2303,10 +2303,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "13.0.0" wakelock_plus: dependency: "direct main" description: @@ -2429,4 +2429,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.3" + flutter: ">=3.19.0"