diff --git a/lib/main.dart b/lib/main.dart index 2770d61..f9f4aa2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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(); diff --git a/lib/video_screen/videoscreen.dart b/lib/video_screen/videoscreen.dart index 2326d60..591a52b 100644 --- a/lib/video_screen/videoscreen.dart +++ b/lib/video_screen/videoscreen.dart @@ -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 { 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 { 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 { @override void dispose() { super.dispose(); + player.dispose(); _controller.dispose(); _appBarTimer?.cancel(); } @@ -110,13 +115,7 @@ class _VideoScreenState extends State { 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 { 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), diff --git a/lib/video_screen/videoscreen_desktop.dart b/lib/video_screen/videoscreen_desktop.dart deleted file mode 100644 index 69657e1..0000000 --- a/lib/video_screen/videoscreen_desktop.dart +++ /dev/null @@ -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 createState() => _VideoScreenDesktopState(); -} - -class _VideoScreenDesktopState extends State { - 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(); - } -} diff --git a/lib/video_screen/videoscreen_mobile.dart b/lib/video_screen/videoscreen_mobile.dart deleted file mode 100644 index 61e5e41..0000000 --- a/lib/video_screen/videoscreen_mobile.dart +++ /dev/null @@ -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 createState() => _VideoScreenMobileState(); -} - -class _VideoScreenMobileState extends State { - 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(() {}); - } -} diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 0e8ad7e..e4b9cf8 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,10 +6,14 @@ #include "generated_plugin_registrant.h" -#include +#include +#include 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); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 468f335..6e35efc 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -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) diff --git a/pubspec.lock b/pubspec.lock index b7736d4..7d49055 100644 --- a/pubspec.lock +++ b/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" diff --git a/pubspec.yaml b/pubspec.yaml index ba2ff94..53b59b0 100644 --- a/pubspec.yaml +++ b/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