From f5e83404f6fb5280b3432e1fc43d5f1590f1563e Mon Sep 17 00:00:00 2001 From: Joey Date: Thu, 23 Mar 2023 18:47:28 -0400 Subject: [PATCH] push --- lib/anime/anime.dart | 56 +++++----- lib/anime/anime_videos.dart | 55 ++++++---- lib/info_page.dart | 213 ++++++++++++++++++++++++++++++++++++ lib/manga/manga_reader.dart | 179 +++++++++++++++++------------- lib/widgets/block.dart | 4 +- lib/widgets/grid.dart | 13 ++- lib/widgets/info_page.dart | 190 -------------------------------- pubspec.lock | 78 +++++++------ pubspec.yaml | 20 ++-- 9 files changed, 442 insertions(+), 366 deletions(-) create mode 100644 lib/info_page.dart delete mode 100644 lib/widgets/info_page.dart diff --git a/lib/anime/anime.dart b/lib/anime/anime.dart index 7d0adb9..4bacd61 100644 --- a/lib/anime/anime.dart +++ b/lib/anime/anime.dart @@ -165,33 +165,35 @@ class AniPageState extends State with AutomaticKeepAliveClientMixin { builder: (context, setState) => AlertDialog( content: SizedBox( width: MediaQuery.of(context).size.width / 2, - child: Wrap( - spacing: 20, - runSpacing: 20, - children: List.generate( - genresList.length, - (index) { - return FilterChip( - labelPadding: const EdgeInsets.all(15), - padding: const EdgeInsets.all(2), - selected: selectedGenres.contains( - genresList[index], - ), - label: Text( - genresList[index], - ), - onSelected: (value) async { - if (value) { - selectedGenres.add(genresList[index]); - } else { - selectedGenres.remove(genresList[index]); - } - setState( - () {}, - ); - }, - ); - }, + child: SingleChildScrollView( + child: Wrap( + spacing: 20, + runSpacing: 20, + children: List.generate( + genresList.length, + (index) { + return FilterChip( + labelPadding: const EdgeInsets.all(15), + padding: const EdgeInsets.all(2), + selected: selectedGenres.contains( + genresList[index], + ), + label: Text( + genresList[index], + ), + onSelected: (value) async { + if (value) { + selectedGenres.add(genresList[index]); + } else { + selectedGenres.remove(genresList[index]); + } + setState( + () {}, + ); + }, + ); + }, + ), ), ), ), diff --git a/lib/anime/anime_videos.dart b/lib/anime/anime_videos.dart index 7b22f3f..02841e1 100644 --- a/lib/anime/anime_videos.dart +++ b/lib/anime/anime_videos.dart @@ -38,8 +38,13 @@ class AniViewerState extends State { super.initState(); } - Future desktopPlayer() async { - controller = await VideoController.create(player!.handle); + Future desktopPlayer(String url) async { + player = Player( + configuration: const PlayerConfiguration(), + ); + controller = await VideoController.create( + player!.handle, + ); Directory dir = await getTemporaryDirectory(); String path = ""; for (final i in subtitles) { @@ -47,8 +52,17 @@ class AniViewerState extends State { if (i['lang'] == "English") { path = "${dir.path}/${i['lang']}subs.vtt"; } - (player!.platform as libmpvPlayer).setProperty("sub-files", path); } + await (player!.platform as libmpvPlayer).setProperty("sub-files", path); + await player!.open( + Playlist( + [ + Media( + url, + ), + ], + ), + ); } @override @@ -56,7 +70,6 @@ class AniViewerState extends State { return FutureBuilder( future: getMediaInfo, builder: (context, snap) { - print(snap.error); if (snap.hasData && snap.connectionState == ConnectionState.done) { subtitles = snap.data!['subtitles']!; if (isPhone) { @@ -82,7 +95,10 @@ class AniViewerState extends State { ); phonePlayer = BetterPlayerController( const BetterPlayerConfiguration( - controlsConfiguration: BetterPlayerControlsConfiguration(), + useRootNavigator: true, + controlsConfiguration: BetterPlayerControlsConfiguration( + playerTheme: BetterPlayerTheme.material, + ), deviceOrientationsOnFullScreen: [ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, @@ -99,26 +115,23 @@ class AniViewerState extends State { controller: phonePlayer!, ); } else { - player = Player(configuration: const PlayerConfiguration()); return FutureBuilder( - future: desktopPlayer(), + future: desktopPlayer( + snap.data!['sources']!.last['url'], + ), builder: (context, innerSnap) { - player!.open( - Playlist( - [ - Media( - snap.data!['sources']!.last['url'], + if (innerSnap.connectionState == ConnectionState.done) { + return Stack( + children: [ + Video(controller: controller), + VideoControls( + player: player!, ), ], - ), - ); - return Stack( - children: [ - Video(controller: controller), - VideoControls( - player: player!, - ), - ], + ); + } + return const Center( + child: CircularProgressIndicator(), ); }, ); diff --git a/lib/info_page.dart b/lib/info_page.dart new file mode 100644 index 0000000..74c9b73 --- /dev/null +++ b/lib/info_page.dart @@ -0,0 +1,213 @@ +import 'package:anicross/anime/anime_videos.dart'; +import 'package:anicross/manga/manga_reader.dart'; +import 'package:anicross/providers/anime_providers.dart'; +import 'package:anicross/providers/info_models.dart'; +import 'package:anicross/providers/manga_providers.dart'; +import 'package:expandable_text/expandable_text.dart'; +import 'package:flutter/material.dart'; +import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; +import 'widgets/image.dart'; + +class InfoPage extends StatefulWidget { + final AniData data; + const InfoPage({required this.data, super.key}); + + @override + State createState() => InfoPageState(); +} + +class InfoPageState extends State { + List content = []; + + @override + void initState() { + Future.microtask( + () async { + content = (widget.data.type == "anime") + ? await mediaList(widget.data.mediaId) + : await dexReader(widget.data.mediaId); + setState(() {}); + }, + ); + super.initState(); + } + + @override + Widget build(context) { + final expands = Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + const Divider(), + Wrap( + spacing: 10, + runSpacing: 10, + children: List.generate( + widget.data.tags.length.clamp(0, 20), + (index) { + return Chip( + label: Text( + widget.data.tags[index], + ), + ); + }, + ), + ), + const Divider( + height: 15, + ), + ExpandableText( + widget.data.description, + expandText: "More", + collapseText: "Less", + maxLines: 8, + ), + ], + ); + return Scaffold( + body: SafeArea( + child: CustomScrollView( + slivers: [ + const SliverPadding( + padding: EdgeInsets.only(left: 15, top: 15), + sliver: SliverToBoxAdapter( + child: Align( + alignment: Alignment.topLeft, + child: BackButton(), + ), + ), + ), + SliverPadding( + padding: const EdgeInsets.all(15), + sliver: SliverToBoxAdapter( + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + flex: 2, + fit: FlexFit.tight, + child: AniImage( + image: widget.data.image, + ), + ), + const VerticalDivider( + width: 20, + ), + Flexible( + flex: 4, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + widget.data.title, + style: const TextStyle( + fontSize: 20, + ), + ), + const Divider( + height: 20, + ), + ActionChip( + onPressed: () {}, + avatar: const Icon(MdiIcons.bookmark), + label: const Text("Later"), + ), + if (MediaQuery.of(context).size.width / + MediaQuery.of(context).size.height > + 1.5) + expands, + ], + ), + ), + ], + ), + ), + ), + if (MediaQuery.of(context).size.width / + MediaQuery.of(context).size.height < + 1.5) + SliverPadding( + padding: const EdgeInsets.only( + left: 15, + right: 15, + ), + sliver: SliverToBoxAdapter( + child: expands, + ), + ), + (content.isNotEmpty) + ? SliverPadding( + padding: const EdgeInsets.all(15), + sliver: SliverGrid( + gridDelegate: + const SliverGridDelegateWithMaxCrossAxisExtent( + mainAxisSpacing: 5, + crossAxisSpacing: 6, + maxCrossAxisExtent: 400, + mainAxisExtent: 100, + //childAspectRatio: 4 / 1, + ), + delegate: SliverChildBuilderDelegate( + childCount: content.length, + (context, index) { + return GestureDetector( + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return Scaffold( + body: (widget.data.type == "anime") + ? AniViewer( + episodes: content, + episode: content[index], + ) + : MangaReader( + chapter: content[index], + chapters: content, + ), + ); + }, + ), + ), + child: IntrinsicHeight( + child: Card( + elevation: 3, + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + child: Text( + content[index]['title'], + overflow: TextOverflow.visible, + ), + ), + Flexible( + child: Text( + content[index]['number'], + ), + ), + ], + ), + ), + ), + ), + ); + }, + ), + ), + ) + : const SliverToBoxAdapter( + child: Center( + child: CircularProgressIndicator(), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/manga/manga_reader.dart b/lib/manga/manga_reader.dart index e7d8ddc..bcca17a 100644 --- a/lib/manga/manga_reader.dart +++ b/lib/manga/manga_reader.dart @@ -1,30 +1,30 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; +import 'package:photo_view/photo_view_gallery.dart'; class MangaReader extends StatelessWidget { - final String current; + final Map chapter; final List chapters; - final int index; final bool reverse; final PageController controller = PageController(); MangaReader( {Key? key, - required this.current, - required this.index, + required this.chapter, required this.chapters, this.reverse = false}) : super(key: key); - dexPages(chapterId, reversed) async { + Future dexPages(chapter, reversed) async { List pages = []; - var json = - await Dio().get("https://api.mangadex.org/at-home/server/$chapterId"); + var json = await Dio().get( + "https://api.mangadex.org/at-home/server/${chapter['id']}", + ); for (var page in json.data['chapter']['data']) { pages.add( - "https://uploads.mangadex.org/data/${json.data['chapter']['hash']}/$page"); + "https://uploads.mangadex.org/data/${json.data['chapter']['hash']}/$page", + ); } if (reversed) { pages = pages.reversed.toList(); @@ -34,77 +34,30 @@ class MangaReader extends StatelessWidget { @override Widget build(context) { - return FutureBuilder( - future: dexPages(current, reverse), + return FutureBuilder( + future: dexPages(chapter, reverse), builder: (context, snapshot) { if (snapshot.hasData) { - if (reverse) {} - return Column( + return Stack( children: [ - const BackButton(), - Expanded( - child: Stack( - children: [ - RawKeyboardListener( - onKey: (event) { - if (event.isKeyPressed(LogicalKeyboardKey.arrowLeft)) { - controller.jumpToPage(controller.page!.toInt() + 1); - } else if (event - .isKeyPressed(LogicalKeyboardKey.arrowRight)) { - controller.jumpToPage(controller.page!.toInt() - 1); - } - }, - focusNode: FocusNode(), - child: PageView.builder( - controller: controller, - allowImplicitScrolling: true, - reverse: true, - //preloadPagesCount: 3, - //scrollDirection: Axis.horizontal, - itemCount: snapshot.data?.length, - itemBuilder: (context, index) { - return InteractiveViewer( - child: Stack( - children: [ - Center( - child: CachedNetworkImage( - placeholder: (context, url) => const Center( - child: CircularProgressIndicator(), - ), - imageUrl: snapshot.data?[index], - ), - ), - ], - ), - ); - }, + PhotoViewGallery.builder( + itemCount: snapshot.data!.length, + allowImplicitScrolling: true, + scrollPhysics: const NeverScrollableScrollPhysics(), + pageController: controller, + reverse: true, + builder: (context, index) { + print(index); + return PhotoViewGalleryPageOptions( + imageProvider: CachedNetworkImageProvider( + snapshot.data?[index], ), - ), - Center( - child: Row( - children: [ - Expanded( - child: GestureDetector( - onTap: () { - controller - .jumpToPage(controller.page!.toInt() + 1); - }, - ), - ), - const Spacer(), - Expanded( - child: GestureDetector( - onTap: () { - controller - .jumpToPage(controller.page!.toInt() - 1); - }, - ), - ), - ], - ), - ), - ], - )), + ); + }, + ), + MangaControls( + controller: controller, + ), ], ); } @@ -125,3 +78,77 @@ class MangaReader extends StatelessWidget { ); } } + +class MangaControls extends StatefulWidget { + final PageController controller; + const MangaControls({required this.controller, super.key}); + + @override + State createState() => MangaControlsState(); +} + +class MangaControlsState extends State { + bool show = true; + + @override + Widget build(context) { + return SafeArea( + child: Stack( + children: [ + AnimatedOpacity( + duration: const Duration(milliseconds: 300), + opacity: !show ? 0.0 : 1.0, + child: Stack( + children: [ + Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color(0xCC000000), + Color(0x00000000), + Color(0x00000000), + Color(0x00000000), + Color(0x00000000), + Color(0x00000000), + Color(0xCC000000), + ], + ), + ), + ), + Positioned.fill( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + child: GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + widget.controller.jumpToPage( + (widget.controller.page! + 1).toInt(), + ); + }, + ), + ), + Flexible( + child: GestureDetector( + onTap: () { + widget.controller.jumpToPage( + (widget.controller.page! - 1).toInt(), + ); + }, + ), + ), + ], + ), + ), + const BackButton(), + ], + ), + ) + ], + ), + ); + } +} diff --git a/lib/widgets/block.dart b/lib/widgets/block.dart index 0dcb423..1be189d 100644 --- a/lib/widgets/block.dart +++ b/lib/widgets/block.dart @@ -1,6 +1,6 @@ import 'package:anicross/providers/info_models.dart'; import 'package:anicross/widgets/image.dart'; -import 'package:anicross/widgets/info_page.dart'; +import 'package:anicross/info_page.dart'; import 'package:flutter/material.dart'; class Block extends StatelessWidget { @@ -39,7 +39,7 @@ class Block extends StatelessWidget { colors: [ Color.fromARGB(0, 0, 0, 0), Color.fromARGB(0, 0, 0, 0), - Color.fromARGB(149, 0, 0, 0), + Color.fromARGB(120, 0, 0, 0), Color.fromARGB(255, 0, 0, 0) ], ), diff --git a/lib/widgets/grid.dart b/lib/widgets/grid.dart index e2c2440..448b615 100644 --- a/lib/widgets/grid.dart +++ b/lib/widgets/grid.dart @@ -25,16 +25,19 @@ class GridState extends State with AutomaticKeepAliveClientMixin { return SliverGrid( //primary: false, gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - mainAxisSpacing: 20, - crossAxisSpacing: 20, + //mainAxisSpacing: 20, + //crossAxisSpacing: 20, childAspectRatio: 4 / 6, - maxCrossAxisExtent: 270, + maxCrossAxisExtent: 280, ), delegate: SliverChildBuilderDelegate( (context, index) { if (index <= widget.data.length - 5) { - return Block( - data: widget.data[index], + return Padding( + padding: const EdgeInsets.all(10), + child: Block( + data: widget.data[index], + ), ); } else { widget.paginate(); diff --git a/lib/widgets/info_page.dart b/lib/widgets/info_page.dart deleted file mode 100644 index 1508eec..0000000 --- a/lib/widgets/info_page.dart +++ /dev/null @@ -1,190 +0,0 @@ -import 'package:anicross/anime/anime_videos.dart'; -import 'package:anicross/manga/manga_reader.dart'; -import 'package:anicross/providers/anime_providers.dart'; -import 'package:anicross/providers/info_models.dart'; -import 'package:anicross/providers/manga_providers.dart'; -import 'package:expandable_text/expandable_text.dart'; -import 'package:flutter/material.dart'; -import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; -import 'image.dart'; - -class InfoPage extends StatefulWidget { - final AniData data; - const InfoPage({required this.data, super.key}); - - @override - State createState() => InfoPageState(); -} - -class InfoPageState extends State { - List episodes = []; - - @override - void initState() { - Future.microtask( - () async { - episodes = (widget.data.type == "anime") - ? await mediaList(widget.data.mediaId) - : await dexReader(widget.data.mediaId); - setState(() {}); - }, - ); - super.initState(); - } - - @override - Widget build(context) { - return Scaffold( - body: SafeArea( - child: CustomScrollView( - slivers: [ - SliverList( - delegate: SliverChildListDelegate( - [ - const Align( - alignment: Alignment.topLeft, - child: BackButton(), - ), - const Divider( - height: 15, - ), - ], - ), - ), - SliverToBoxAdapter( - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Flexible( - flex: 2, - fit: FlexFit.tight, - child: AniImage( - image: widget.data.image, - ), - ), - const VerticalDivider( - width: 20, - ), - Flexible( - flex: 4, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.data.title, - style: const TextStyle( - fontSize: 20, - ), - ), - const Divider( - height: 20, - ), - ActionChip( - onPressed: () {}, - avatar: const Icon(MdiIcons.bookmark), - label: const Text("Later"), - ), - ], - ), - ), - ], - ), - ), - SliverToBoxAdapter( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - const Divider(), - Wrap( - spacing: 10, - runSpacing: 10, - children: List.generate( - widget.data.tags.length.clamp(0, 20), - (index) { - return Chip( - label: Text( - widget.data.tags[index], - ), - ); - }, - ), - ), - const Divider( - height: 15, - ), - ExpandableText( - widget.data.description, - expandText: "More", - collapseText: "Less", - maxLines: 8, - ), - ], - ), - ), - (episodes.isNotEmpty) - ? SliverGrid( - gridDelegate: - const SliverGridDelegateWithMaxCrossAxisExtent( - mainAxisSpacing: 5, - crossAxisSpacing: 6, - maxCrossAxisExtent: 400, - childAspectRatio: 4 / 1, - ), - delegate: SliverChildBuilderDelegate( - childCount: episodes.length, - (context, index) { - return GestureDetector( - onTap: () => Navigator.push( - context, - MaterialPageRoute( - builder: (context) { - return Scaffold( - body: (widget.data.type == "anime") - ? AniViewer( - episodes: episodes, - episode: episodes[index], - ) - : MangaReader( - current: "", - index: index, - chapters: [], - ), - ); - }, - ), - ), - child: Card( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - Flexible( - child: Text( - episodes[index]['title'], - ), - ), - Flexible( - child: Text( - episodes[index]['number'], - ), - ), - ], - ), - ), - ); - }, - ), - ) - : const SliverToBoxAdapter( - child: Center( - child: CircularProgressIndicator(), - ), - ), - ], - ), - ), - ); - } -} diff --git a/pubspec.lock b/pubspec.lock index a1e46db..91f531f 100755 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "503361166f4a100e0d7eb7fb5a62c6f0322512f2bcb48d6922caf98f24b0ab90" + sha256: d74f051467a841ce893a50ebeb420b7a5695f985d2781e22b3927fbc849aea45 url: "https://pub.dev" source: hosted - version: "56.0.0" + version: "57.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "93fcd81a6716e69864516750590cf1e699420615046bda19100238aa7b429785" + sha256: b665679cdccab0c754e65021f01087c6fab07a0b13659dd58827f765739b40f8 url: "https://pub.dev" source: hosted - version: "5.8.0" + version: "5.9.0" archive: dependency: "direct main" description: @@ -45,10 +45,10 @@ packages: dependency: "direct main" description: name: audio_video_progress_bar - sha256: "38d8efe20cd0ff2bfad648396ae3d4ba6f8058b7d8b6ee6cb26e3245eda58ddd" + sha256: "67f3a5ea70d48b48caaf29f5a0606284a6aa3a393736daf9e82bec985d2f9b70" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" better_player: dependency: "direct main" description: @@ -150,10 +150,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -238,10 +238,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "2644a9e0965a7aa3deb09cb8ce4081db4450c178f472818c8cd34216a3070d7b" + sha256: "3e5c4a94d112540d0c9a6b7f3969832e1604eb8cde0f88d0808382f9f632100b" url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "5.0.3" expandable_text: dependency: "direct main" description: @@ -311,6 +311,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0-alpha.6" + flutter_layout_grid: + dependency: "direct main" + description: + name: flutter_layout_grid + sha256: "1df27a2e9cd34faa0c0a33148c8bb9d9259e87cc5b934c989a59a77e1a4c0d6b" + url: "https://pub.dev" + source: hosted + version: "2.0.1" flutter_lints: dependency: "direct dev" description: @@ -476,14 +484,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - infinite_scroll_pagination: - dependency: "direct main" - description: - name: infinite_scroll_pagination - sha256: "9517328f4e373f08f57dbb11c5aac5b05554142024d6b60c903f3b73476d52db" - url: "https://pub.dev" - source: hosted - version: "3.2.0" io: dependency: transitive description: @@ -577,7 +577,7 @@ packages: description: path: media_kit ref: main - resolved-ref: "24f95f20233105220306388d7e3f5aef413d8cb9" + resolved-ref: "2fdd64dd4f2855d6c12c57306c5ebf4a7c8db27a" url: "https://github.com/alexmercerind/media_kit.git" source: git version: "0.0.1" @@ -586,7 +586,7 @@ packages: description: path: media_kit_libs_linux ref: main - resolved-ref: "24f95f20233105220306388d7e3f5aef413d8cb9" + resolved-ref: "2fdd64dd4f2855d6c12c57306c5ebf4a7c8db27a" url: "https://github.com/alexmercerind/media_kit" source: git version: "1.0.0" @@ -595,7 +595,7 @@ packages: description: path: media_kit_libs_macos_video ref: main - resolved-ref: "24f95f20233105220306388d7e3f5aef413d8cb9" + resolved-ref: "2fdd64dd4f2855d6c12c57306c5ebf4a7c8db27a" url: "https://github.com/alexmercerind/media_kit" source: git version: "1.0.0" @@ -604,7 +604,7 @@ packages: description: path: media_kit_libs_windows_video ref: main - resolved-ref: "24f95f20233105220306388d7e3f5aef413d8cb9" + resolved-ref: "2fdd64dd4f2855d6c12c57306c5ebf4a7c8db27a" url: "https://github.com/alexmercerind/media_kit" source: git version: "1.0.0" @@ -613,7 +613,7 @@ packages: description: path: media_kit_video ref: main - resolved-ref: "24f95f20233105220306388d7e3f5aef413d8cb9" + resolved-ref: "2fdd64dd4f2855d6c12c57306c5ebf4a7c8db27a" url: "https://github.com/alexmercerind/media_kit.git" source: git version: "0.0.1" @@ -677,10 +677,10 @@ packages: dependency: "direct main" description: name: path_provider - sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" + sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4 url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "2.0.14" path_provider_android: dependency: transitive description: @@ -777,6 +777,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.3.0" + photo_view: + dependency: "direct main" + description: + name: photo_view + sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb" + url: "https://pub.dev" + source: hosted + version: "0.14.0" platform: dependency: transitive description: @@ -797,10 +805,10 @@ packages: dependency: transitive description: name: pointycastle - sha256: "57b6b78df14175658f09c5dfcfc51a46ad9561a3504fe679913dab404d0cc0f2" + sha256: ae73e842cdd27a3467a71d70cefd9b198538aab4fc7dde1d0e8c78c96225abf0 url: "https://pub.dev" source: hosted - version: "3.7.0" + version: "3.7.1" pool: dependency: transitive description: @@ -833,6 +841,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.2" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" rxdart: dependency: transitive description: @@ -878,14 +894,6 @@ packages: description: flutter source: sdk version: "0.0.99" - sliver_tools: - dependency: transitive - description: - name: sliver_tools - sha256: bfa69411ebb203cc1a115b1e8bc7935b893eb381fdcf8d453b40c0d4e1db3247 - url: "https://pub.dev" - source: hosted - version: "0.2.9" source_gen: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 42b474e..50fa9ed 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,8 +12,11 @@ environment: #sdk: ">=3.0.0-122.0.dev" dependencies: - archive: - + + flutter: + sdk: flutter + flutter_html: ^3.0.0-alpha.6 + archive: better_player: git: url: https://github.com/femalemonkeyman/betterplayer @@ -21,9 +24,7 @@ dependencies: cached_network_image: dio: file_picker: - flutter: - sdk: flutter - flutter_html: ^3.0.0-alpha.6 + photo_view: media_kit: git: url: https://github.com/alexmercerind/media_kit.git @@ -51,17 +52,16 @@ dependencies: path: media_kit_libs_macos_video path_provider: permission_handler: - #preload_page_view: ^0.1.6 universal_io: xml: audio_video_progress_bar: window_manager: graphql: - material_design_icons_flutter: - infinite_scroll_pagination: isar: ^3.0.5 isar_flutter_libs: ^3.0.5 - expandable_text: + expandable_text: + flutter_layout_grid: + material_design_icons_flutter: dependency_overrides: web_socket_channel: 2.2.0 @@ -76,6 +76,6 @@ flutter: # the material Icons class. uses-material-design: true dev_dependencies: - build_runner: ^2.4.0 + build_runner: flutter_lints: isar_generator: ^3.0.5