diff --git a/assets/images/music.webp b/assets/images/music.webp new file mode 100644 index 0000000..52ca8c0 Binary files /dev/null and b/assets/images/music.webp differ diff --git a/lib/screens/MediaGrid.dart b/lib/screens/MediaGrid.dart index a9d7fb6..457d519 100644 --- a/lib/screens/MediaGrid.dart +++ b/lib/screens/MediaGrid.dart @@ -14,7 +14,7 @@ class MediaGrid extends StatefulWidget { class _MediaGridState extends State { final ScrollController _scrollController = ScrollController(); - final String _version = '1.0.22+22'; + final String _version = '1.0.23+23'; List mediaItems = []; bool isLoading = false; Timer? _debounceTimer; diff --git a/lib/widgets/VideoOverlay.dart b/lib/widgets/VideoOverlay.dart index dc9e90a..428cc3c 100644 --- a/lib/widgets/VideoOverlay.dart +++ b/lib/widgets/VideoOverlay.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:video_player/video_player.dart'; +import 'package:cached_video_player_plus/cached_video_player_plus.dart'; class VideoControlsOverlay extends StatelessWidget { - final VideoPlayerController controller; + final CachedVideoPlayerPlusController controller; final VoidCallback button; const VideoControlsOverlay({ @@ -76,7 +76,7 @@ class _ControlButton extends StatelessWidget { } class _ProgressIndicator extends StatelessWidget { - final VideoPlayerController controller; + final CachedVideoPlayerPlusController controller; const _ProgressIndicator({required this.controller}); diff --git a/lib/widgets/VideoWidget.dart b/lib/widgets/VideoWidget.dart index 2aa59d6..88cdf98 100644 --- a/lib/widgets/VideoWidget.dart +++ b/lib/widgets/VideoWidget.dart @@ -1,10 +1,9 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; -import 'package:video_player/video_player.dart'; +import 'package:cached_video_player_plus/cached_video_player_plus.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:f0ckapp/models/MediaItem.dart'; import 'package:f0ckapp/widgets/VideoOverlay.dart'; +import 'dart:async'; class VideoWidget extends StatefulWidget { final MediaItem details; @@ -15,7 +14,7 @@ class VideoWidget extends StatefulWidget { } class _VideoWidgetState extends State { - late VideoPlayerController _controller; + late CachedVideoPlayerPlusController _controller; bool _showControls = false; Timer? _hideControlsTimer; @@ -26,7 +25,7 @@ class _VideoWidgetState extends State { } Future _initController() async { - _controller = VideoPlayerController.networkUrl( + _controller = CachedVideoPlayerPlusController.networkUrl( Uri.parse(widget.details.mediaUrl), ); await _controller.initialize(); @@ -69,7 +68,7 @@ class _VideoWidgetState extends State { ? _controller.value.aspectRatio : 9 / 16, child: Stack( - alignment: Alignment.center, + alignment: Alignment.topCenter, children: [ GestureDetector( onTap: _onTap, @@ -79,17 +78,29 @@ class _VideoWidgetState extends State { fit: BoxFit.cover, placeholder: (context, url) => CircularProgressIndicator(), - errorWidget: (context, url, error) => Image.network( - "https://f0ck.me/s/img/music.webp", + errorWidget: (context, url, error) => Image.asset( + 'assets/images/music.webp', fit: BoxFit.contain, + width: double.infinity ), ) : _controller.value.isInitialized - ? VideoPlayer(_controller) + ? CachedVideoPlayerPlus(_controller) : Center(child: CircularProgressIndicator()), ), if (_controller.value.isInitialized && _showControls) ...[ - VideoControlsOverlay(controller: _controller, button: () => _onTap(ctrlButton: true)), + IgnorePointer( + ignoring: true, + child: Container( + color: Colors.black.withValues(alpha: 0.5), + width: double.infinity, + height: double.infinity, + ), + ), + VideoControlsOverlay( + controller: _controller, + button: () => _onTap(ctrlButton: true), + ), ], ], ), diff --git a/pubspec.lock b/pubspec.lock index f9d923c..565f08c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -41,6 +41,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + cached_video_player_plus: + dependency: "direct main" + description: + name: cached_video_player_plus + sha256: "451ee48bdbd28fac3d49b4389929c44d259b1def5be6dab0c5bfd3ae1f05e8b5" + url: "https://pub.dev" + source: hosted + version: "3.0.3" characters: dependency: transitive description: @@ -152,6 +160,22 @@ packages: description: flutter source: sdk version: "0.0.0" + get: + dependency: transitive + description: + name: get + sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425 + url: "https://pub.dev" + source: hosted + version: "4.7.2" + get_storage: + dependency: transitive + description: + name: get_storage + sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" + url: "https://pub.dev" + source: hosted + version: "2.1.1" html: dependency: transitive description: @@ -453,14 +477,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" - video_player: - dependency: "direct main" - description: - name: video_player - sha256: "7d78f0cfaddc8c19d4cb2d3bebe1bfef11f2103b0a03e5398b303a1bf65eeb14" - url: "https://pub.dev" - source: hosted - version: "2.9.5" video_player_android: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 571fcfa..bbb3a99 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.22+22 +version: 1.0.23+23 environment: sdk: ^3.9.0-100.2.beta @@ -31,12 +31,12 @@ dependencies: flutter: sdk: flutter http: ^1.4.0 - video_player: ^2.2.10 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 cached_network_image: ^3.4.1 + cached_video_player_plus: ^3.0.3 dev_dependencies: flutter_test: @@ -61,7 +61,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: + assets: + - assets/images/ # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg