use one unified media player for linux and android
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| import "package:dart_vlc/dart_vlc.dart"; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:flutter/services.dart'; | ||||
| import 'package:media_kit/media_kit.dart'; | ||||
|  | ||||
| import 'app.dart'; | ||||
| import 'db/database.dart'; | ||||
| @@ -10,9 +10,10 @@ import 'utils/platform.dart'; | ||||
|  | ||||
| void main() async { | ||||
|   Log.i("App init!"); | ||||
|   if (isDesktop()) { | ||||
|     DartVLC.initialize(); | ||||
|   } else { | ||||
|   WidgetsFlutterBinding.ensureInitialized(); | ||||
|   MediaKit.ensureInitialized(); | ||||
|  | ||||
|   if (!isDesktop()) { | ||||
|     await loadDeviceInfo(); | ||||
|   } | ||||
|   await Db().init(); | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| import 'dart:async'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:media_kit/media_kit.dart'; | ||||
| import 'package:media_kit_video/media_kit_video.dart'; | ||||
| import 'package:openmediacentermobile/db/settings_db.dart'; | ||||
|  | ||||
| import '../api/video_api.dart'; | ||||
| @@ -9,9 +11,6 @@ import '../types/video.dart'; | ||||
| import '../types/video_data.dart'; | ||||
| import '../utils/platform.dart'; | ||||
| import 'info_view.dart'; | ||||
| import 'videoscreen_desktop.dart' | ||||
|     if (dart.library.html) 'videoscreen_mobile.dart'; | ||||
| import 'videoscreen_mobile.dart'; | ||||
|  | ||||
| class VideoScreen extends StatefulWidget { | ||||
|   const VideoScreen({Key? key, required this.metaData}) : super(key: key); | ||||
| @@ -28,6 +27,10 @@ class _VideoScreenState extends State<VideoScreen> { | ||||
|   PageController _controller = PageController( | ||||
|     initialPage: 0, | ||||
|   ); | ||||
|   // Create a [Player] to control playback. | ||||
|   late final player = Player(); | ||||
|   // Create a [VideoController] to handle video output from [Player]. | ||||
|   late final controller = VideoController(player); | ||||
|  | ||||
|   String url = ""; | ||||
|  | ||||
| @@ -36,6 +39,7 @@ class _VideoScreenState extends State<VideoScreen> { | ||||
|  | ||||
|     final settings = await SettingsDB.getInstance().getSettings(); | ||||
|     final path = settings.domain + settings.videopath + videodata.movieUrl; | ||||
|     player.open(Media(path)); | ||||
|  | ||||
|     url = path; | ||||
|   } | ||||
| @@ -51,6 +55,7 @@ class _VideoScreenState extends State<VideoScreen> { | ||||
|   @override | ||||
|   void dispose() { | ||||
|     super.dispose(); | ||||
|     player.dispose(); | ||||
|     _controller.dispose(); | ||||
|     _appBarTimer?.cancel(); | ||||
|   } | ||||
| @@ -110,13 +115,7 @@ class _VideoScreenState extends State<VideoScreen> { | ||||
|                       controller: _controller, | ||||
|                       children: [ | ||||
|                         Center( | ||||
|                             child: isDesktop() | ||||
|                                 ? VideoScreenDesktop( | ||||
|                                     url: url, | ||||
|                                   ) | ||||
|                                 : VideoScreenMobile( | ||||
|                                     url: url, | ||||
|                                   )), | ||||
|                             child: Video(controller: controller)), | ||||
|                         InfoView( | ||||
|                           videoId: widget.metaData.id, | ||||
|                         ) | ||||
| @@ -131,7 +130,10 @@ class _VideoScreenState extends State<VideoScreen> { | ||||
|                         leading: new IconButton( | ||||
|                           icon: new Icon(Icons.arrow_back_ios, | ||||
|                               color: Colors.grey), | ||||
|                           onPressed: () => Navigator.of(context).pop(), | ||||
|                           onPressed: () async { | ||||
|                             await player.stop(); | ||||
|                             Navigator.of(context).pop(); | ||||
|                           }, | ||||
|                         ), | ||||
|                         backgroundColor: | ||||
|                             Theme.of(context).primaryColor.withOpacity(0.3), | ||||
|   | ||||
| @@ -1,51 +0,0 @@ | ||||
| import 'dart:math'; | ||||
|  | ||||
| import 'package:dart_vlc/dart_vlc.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:flutter/services.dart'; | ||||
|  | ||||
| class VideoScreenDesktop extends StatefulWidget { | ||||
|   const VideoScreenDesktop({Key? key, required this.url}) : super(key: key); | ||||
|   final String url; | ||||
|  | ||||
|   @override | ||||
|   State<VideoScreenDesktop> createState() => _VideoScreenDesktopState(); | ||||
| } | ||||
|  | ||||
| class _VideoScreenDesktopState extends State<VideoScreenDesktop> { | ||||
|   Player _player = Player(id: Random().nextInt(0x7fffffff)); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Video( | ||||
|         player: _player, | ||||
|         scale: 1.0, // default | ||||
|         showControls: true); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|  | ||||
|     final media2 = Media.network(widget.url); | ||||
|  | ||||
|     _player.open( | ||||
|       media2, | ||||
|       autoStart: true, // default | ||||
|     ); | ||||
|  | ||||
|     RawKeyboard.instance.addListener((value) { | ||||
|       if (value.logicalKey == LogicalKeyboardKey.arrowRight) { | ||||
|         _player.seek(_player.position.position! + const Duration(seconds: 5)); | ||||
|       } else if (value.logicalKey == LogicalKeyboardKey.arrowLeft) { | ||||
|         _player.seek(_player.position.position! + const Duration(seconds: -5)); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   void dispose() { | ||||
|     super.dispose(); | ||||
|     _player.dispose(); | ||||
|   } | ||||
| } | ||||
| @@ -1,59 +0,0 @@ | ||||
| import 'package:chewie/chewie.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:video_player/video_player.dart'; | ||||
|  | ||||
| class VideoScreenMobile extends StatefulWidget { | ||||
|   const VideoScreenMobile({Key? key, required this.url}) : super(key: key); | ||||
|   final String url; | ||||
|  | ||||
|   @override | ||||
|   State<VideoScreenMobile> createState() => _VideoScreenMobileState(); | ||||
| } | ||||
|  | ||||
| class _VideoScreenMobileState extends State<VideoScreenMobile> { | ||||
|   ChewieController? _chewieController; | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     if (_chewieController == null) { | ||||
|       return Column( | ||||
|         crossAxisAlignment: CrossAxisAlignment.center, | ||||
|         mainAxisAlignment: MainAxisAlignment.center, | ||||
|         children: const [CircularProgressIndicator(), Text("loading...")], | ||||
|       ); | ||||
|     } | ||||
|     return Chewie( | ||||
|       controller: _chewieController!, | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   void dispose() { | ||||
|     super.dispose(); | ||||
|     _chewieController?.videoPlayerController.dispose(); | ||||
|     _chewieController?.dispose(); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     _init(); | ||||
|   } | ||||
|  | ||||
|   void _init() async { | ||||
|     final VideoPlayerController _controller = | ||||
|         VideoPlayerController.network(widget.url); | ||||
|     await _controller.initialize(); | ||||
|  | ||||
|     _chewieController = ChewieController( | ||||
|         videoPlayerController: _controller, | ||||
|         autoPlay: true, | ||||
|         looping: true, | ||||
|         allowFullScreen: true, | ||||
|         allowMuting: true, | ||||
|         allowPlaybackSpeedChanging: true, | ||||
|         zoomAndPan: true); | ||||
|  | ||||
|     setState(() {}); | ||||
|   } | ||||
| } | ||||
| @@ -6,10 +6,14 @@ | ||||
|  | ||||
| #include "generated_plugin_registrant.h" | ||||
|  | ||||
| #include <dart_vlc/dart_vlc_plugin.h> | ||||
| #include <media_kit_libs_linux/media_kit_libs_linux_plugin.h> | ||||
| #include <media_kit_video/media_kit_video_plugin.h> | ||||
|  | ||||
| void fl_register_plugins(FlPluginRegistry* registry) { | ||||
|   g_autoptr(FlPluginRegistrar) dart_vlc_registrar = | ||||
|       fl_plugin_registry_get_registrar_for_plugin(registry, "DartVlcPlugin"); | ||||
|   dart_vlc_plugin_register_with_registrar(dart_vlc_registrar); | ||||
|   g_autoptr(FlPluginRegistrar) media_kit_libs_linux_registrar = | ||||
|       fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin"); | ||||
|   media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar); | ||||
|   g_autoptr(FlPluginRegistrar) media_kit_video_registrar = | ||||
|       fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitVideoPlugin"); | ||||
|   media_kit_video_plugin_register_with_registrar(media_kit_video_registrar); | ||||
| } | ||||
|   | ||||
| @@ -3,10 +3,12 @@ | ||||
| # | ||||
|  | ||||
| list(APPEND FLUTTER_PLUGIN_LIST | ||||
|   dart_vlc | ||||
|   media_kit_libs_linux | ||||
|   media_kit_video | ||||
| ) | ||||
|  | ||||
| list(APPEND FLUTTER_FFI_PLUGIN_LIST | ||||
|   media_kit_native_event_loop | ||||
| ) | ||||
|  | ||||
| set(PLUGIN_BUNDLED_LIBRARIES) | ||||
|   | ||||
							
								
								
									
										361
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										361
									
								
								pubspec.lock
									
									
									
									
									
								
							| @@ -5,112 +5,88 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: async | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.9.0" | ||||
|   audio_video_progress_bar: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: audio_video_progress_bar | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "0.11.0" | ||||
|     version: "2.11.0" | ||||
|   boolean_selector: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: boolean_selector | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.0" | ||||
|     version: "2.1.1" | ||||
|   characters: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: characters | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.1" | ||||
|   chewie: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: chewie | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "1.3.6" | ||||
|     version: "1.3.0" | ||||
|   clock: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: clock | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.1" | ||||
|   collection: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: collection | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.16.0" | ||||
|   csslib: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: csslib | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "0.17.2" | ||||
|     version: "1.17.1" | ||||
|   cupertino_icons: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: cupertino_icons | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.5" | ||||
|   dart_vlc: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: dart_vlc | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "0.4.0" | ||||
|   dart_vlc_ffi: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: dart_vlc_ffi | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "0.2.0+1" | ||||
|   device_info_plus: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: device_info_plus | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "7ff671ed0a6356fa8f2e1ae7d3558d3fb7b6a41e24455e4f8df75b811fb8e4ab" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "8.0.0" | ||||
|   device_info_plus_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: device_info_plus_platform_interface | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "7.0.0" | ||||
|   fake_async: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: fake_async | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.3.1" | ||||
|   ffi: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: ffi | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.1" | ||||
|   file: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: file | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.1.4" | ||||
|   flutter: | ||||
| @@ -122,14 +98,16 @@ packages: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
|       name: flutter_lints | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.1" | ||||
|   flutter_staggered_grid_view: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: flutter_staggered_grid_view | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.6.2" | ||||
|   flutter_test: | ||||
| @@ -142,97 +120,182 @@ packages: | ||||
|     description: flutter | ||||
|     source: sdk | ||||
|     version: "0.0.0" | ||||
|   html: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: html | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "0.15.1" | ||||
|   http: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: http | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.13.5" | ||||
|   http_parser: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: http_parser | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.0.2" | ||||
|   js: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: js | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.6.4" | ||||
|     version: "0.6.7" | ||||
|   lints: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: lints | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.1" | ||||
|   logger: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: logger | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "5076f09225f91dc49289a4ccb92df2eeea9ea01cf7c26d49b3a1f04c6a49eec1" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.0" | ||||
|   matcher: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: matcher | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.12.12" | ||||
|     version: "0.12.15" | ||||
|   material_color_utilities: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: material_color_utilities | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.5" | ||||
|     version: "0.2.0" | ||||
|   media_kit: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: media_kit | ||||
|       sha256: "8c7d9417bed724a3fcaadd91c722fea042737cafb153aa1f1e6461a0fee683a3" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.2" | ||||
|   media_kit_libs_android_video: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: media_kit_libs_android_video | ||||
|       sha256: "228c3b182831e194bb178d4d22a1839af812c917cb76fe87d6fdc9ea4328dc81" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.1" | ||||
|   media_kit_libs_linux: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: media_kit_libs_linux | ||||
|       sha256: "21acc71cbae3518b3aeef9023a6a3a3decb579a40153764333814987ccd61040" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.2" | ||||
|   media_kit_native_event_loop: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: media_kit_native_event_loop | ||||
|       sha256: "5351f0c28124b5358756515d8619abad182cdefe967468d7fb5b274737cc2f59" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.6" | ||||
|   media_kit_video: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: media_kit_video | ||||
|       sha256: d31a0eab80cafadccdedb663d8a127750e38b8c75c1aa83d8943f8119b88cf99 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.2" | ||||
|   meta: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: meta | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.8.0" | ||||
|   nested: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: nested | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "1.0.0" | ||||
|     version: "1.9.1" | ||||
|   path: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: path | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.8.2" | ||||
|     version: "1.8.3" | ||||
|   plugin_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: plugin_platform_interface | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.3" | ||||
|   provider: | ||||
|   safe_local_storage: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: provider | ||||
|       url: "https://pub.dartlang.org" | ||||
|       name: safe_local_storage | ||||
|       sha256: ede4eb6cb7d88a116b3d3bf1df70790b9e2038bc37cb19112e381217c74d9440 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.0.4" | ||||
|     version: "1.0.2" | ||||
|   screen_brightness: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: screen_brightness | ||||
|       sha256: "62fd61a64e68b32b98b840bad7d8b6822bbc40e63c2b569a5f85528484c86b41" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.2.2" | ||||
|   screen_brightness_android: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: screen_brightness_android | ||||
|       sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.0+2" | ||||
|   screen_brightness_ios: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: screen_brightness_ios | ||||
|       sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.0" | ||||
|   screen_brightness_macos: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: screen_brightness_macos | ||||
|       sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.0+1" | ||||
|   screen_brightness_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: screen_brightness_platform_interface | ||||
|       sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.0" | ||||
|   screen_brightness_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: screen_brightness_windows | ||||
|       sha256: "80d90ecdc63fc0823f2ecb1be323471619287937e14210650d7b25ca181abd05" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.1" | ||||
|   sky_engine: | ||||
|     dependency: transitive | ||||
|     description: flutter | ||||
| @@ -242,170 +305,178 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: source_span | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.9.0" | ||||
|     version: "1.9.1" | ||||
|   sqflite: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: sqflite | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: d21c022832f139b89922738e200c07387a49c549bf36c35654418e19ff76d161 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.0+3" | ||||
|   sqflite_common: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: sqflite_common | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "0c21a187d645aa65da5be6997c0c713eed61e049158870ae2de157e6897067ab" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.4.0+2" | ||||
|   sqflite_common_ffi: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: sqflite_common_ffi | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "9c922744759dc8364ae724af2620acf25aba2e7756aae7844b98649e6fd29f11" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.0+1" | ||||
|   sqlite3: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: sqlite3 | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: db6350456720a4088a364bbe02052d43056a5ffbd4816fe9d28310dcfbe0dc05 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.9.1" | ||||
|   stack_trace: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: stack_trace | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.10.0" | ||||
|     version: "1.11.0" | ||||
|   stream_channel: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: stream_channel | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.0" | ||||
|     version: "2.1.1" | ||||
|   string_scanner: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: string_scanner | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.1" | ||||
|     version: "1.2.0" | ||||
|   synchronized: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: synchronized | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.0+3" | ||||
|     version: "3.1.0" | ||||
|   term_glyph: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: term_glyph | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.1" | ||||
|   test_api: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: test_api | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.4.12" | ||||
|     version: "0.5.1" | ||||
|   typed_data: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: typed_data | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.3.1" | ||||
|   universal_platform: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: universal_platform | ||||
|       sha256: d315be0f6641898b280ffa34e2ddb14f3d12b1a37882557869646e0cc363d0cc | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.0+1" | ||||
|   uri_parser: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: uri_parser | ||||
|       sha256: "6543c9fd86d2862fac55d800a43e67c0dcd1a41677cb69c2f8edfe73bbcf1835" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.2" | ||||
|   vector_math: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: vector_math | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.2" | ||||
|   video_player: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: video_player | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.4.8" | ||||
|   video_player_android: | ||||
|     version: "2.1.4" | ||||
|   volume_controller: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: video_player_android | ||||
|       url: "https://pub.dartlang.org" | ||||
|       name: volume_controller | ||||
|       sha256: "189bdc7a554f476b412e4c8b2f474562b09d74bc458c23667356bce3ca1d48c9" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.9" | ||||
|   video_player_avfoundation: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: video_player_avfoundation | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.3.7" | ||||
|   video_player_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: video_player_platform_interface | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "5.1.4" | ||||
|   video_player_web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: video_player_web | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.0.12" | ||||
|     version: "2.0.7" | ||||
|   wakelock: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: wakelock | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "769ecf42eb2d07128407b50cb93d7c10bd2ee48f0276ef0119db1d25cc2f87db" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.6.2" | ||||
|   wakelock_macos: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: wakelock_macos | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "047c6be2f88cb6b76d02553bca5a3a3b95323b15d30867eca53a19a0a319d4cd" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.4.0" | ||||
|   wakelock_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: wakelock_platform_interface | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "1f4aeb81fb592b863da83d2d0f7b8196067451e4df91046c26b54a403f9de621" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.3.0" | ||||
|   wakelock_web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: wakelock_web | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "1b256b811ee3f0834888efddfe03da8d18d0819317f20f6193e2922b41a501b5" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.4.0" | ||||
|   wakelock_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: wakelock_windows | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: "857f77b3fe6ae82dd045455baa626bc4b93cb9bb6c86bf3f27c182167c3a5567" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.2.1" | ||||
|   win32: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: win32 | ||||
|       url: "https://pub.dartlang.org" | ||||
|       sha256: ca121dbbadb3e43b449053feab0cdf3f2bff93b107cacf0290e3d29f717374b6 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.1.2" | ||||
| sdks: | ||||
|   dart: ">=2.18.0 <3.0.0" | ||||
|   flutter: ">=3.3.0" | ||||
|   dart: ">=3.0.0-0 <4.0.0" | ||||
|   flutter: ">=3.7.0" | ||||
|   | ||||
							
								
								
									
										12
									
								
								pubspec.yaml
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								pubspec.yaml
									
									
									
									
									
								
							| @@ -37,14 +37,20 @@ dependencies: | ||||
|   logger: ^1.1.0 | ||||
|   http: ^0.13.4 | ||||
|   flutter_staggered_grid_view: ^0.6.1 | ||||
|   dart_vlc: ^0.4.0 | ||||
|   device_info_plus: ^8.0.0 | ||||
|   video_player: ^2.3.0 | ||||
|   chewie: ^1.3.2 | ||||
|   sqflite: ^2.0.3+1 | ||||
|   path: ^1.8.1 | ||||
|   sqflite_common_ffi: ^2.1.1+1 | ||||
|  | ||||
|   media_kit: ^1.0.2                              # Primary package. | ||||
|  | ||||
|   media_kit_video: ^1.0.2                        # For video rendering. | ||||
|  | ||||
|   media_kit_native_event_loop: ^1.0.6            # Support for higher number of concurrent instances & better performance. | ||||
|  | ||||
|   media_kit_libs_android_video: ^1.1.1           # Android package for video native libraries. | ||||
|   media_kit_libs_linux: ^1.0.2                   # GNU/Linux dependency package. | ||||
|  | ||||
| dev_dependencies: | ||||
|   flutter_test: | ||||
|     sdk: flutter | ||||
|   | ||||
		Reference in New Issue
	
	Block a user