From 50eff04fe6576b6fbef843659320a4b25f3fad2f Mon Sep 17 00:00:00 2001 From: Schnitzel5 Date: Fri, 20 Dec 2024 00:22:18 +0100 Subject: [PATCH] added extension functions --- lib/eval/dart/bridge/m_provider.dart | 11 ++ lib/eval/dart/model/m_provider.dart | 2 + lib/eval/dart/service.dart | 4 + lib/eval/javascript/service.dart | 8 + lib/modules/browse/extension/edit_code.dart | 20 +- .../extension/widgets/create_extension.dart | 10 + lib/modules/novel/novel_reader_view.dart | 36 ++-- lib/services/get_html_content.dart | 21 +++ lib/services/get_html_content.g.dart | 177 ++++++++++++++++++ pubspec.lock | 162 ++++++++-------- 10 files changed, 351 insertions(+), 100 deletions(-) create mode 100644 lib/services/get_html_content.dart create mode 100644 lib/services/get_html_content.g.dart diff --git a/lib/eval/dart/bridge/m_provider.dart b/lib/eval/dart/bridge/m_provider.dart index 814cda2..b36d627 100644 --- a/lib/eval/dart/bridge/m_provider.dart +++ b/lib/eval/dart/bridge/m_provider.dart @@ -98,6 +98,13 @@ class $MProvider extends MProvider with $Bridge { BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), false), ])), + 'getHtmlContent': BridgeMethodDef(BridgeFunctionDef( + returns: BridgeTypeAnnotation(BridgeTypeRef( + CoreTypes.future, [BridgeTypeRef(CoreTypes.string)])), + params: [ + BridgeParameter('url', + BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), false), + ])), 'getFilterList': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef( CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)])), @@ -1147,6 +1154,10 @@ class $MProvider extends MProvider with $Bridge { return list.map((e) => (e is $Value ? e.$reified : e) as Video).toList(); } + @override + Future getHtmlContent(String url) async => + await $_invoke('getHtmlContent', [$String(url)]); + @override Map get headers { try { diff --git a/lib/eval/dart/model/m_provider.dart b/lib/eval/dart/model/m_provider.dart index 24d216c..4c3e573 100644 --- a/lib/eval/dart/model/m_provider.dart +++ b/lib/eval/dart/model/m_provider.dart @@ -24,6 +24,8 @@ abstract class MProvider { Future> getVideoList(String url); + Future getHtmlContent(String url); + List getFilterList(); List getSourcePreferences(); diff --git a/lib/eval/dart/service.dart b/lib/eval/dart/service.dart index 86c2c75..31b35f2 100644 --- a/lib/eval/dart/service.dart +++ b/lib/eval/dart/service.dart @@ -102,6 +102,10 @@ class DartExtensionService { return await _executeLib().getVideoList(url); } + Future getHtmlContent(String url) async { + return await _executeLib().getHtmlContent(url); + } + List getFilterList() { return _executeLib() .getFilterList() diff --git a/lib/eval/javascript/service.dart b/lib/eval/javascript/service.dart index 93b635b..aa97d3a 100644 --- a/lib/eval/javascript/service.dart +++ b/lib/eval/javascript/service.dart @@ -143,6 +143,14 @@ var extention = new DefaultExtension(); .toList(); } + Future getHtmlContent(String url) async { + _init(); + final res = (await runtime.handlePromise(await runtime.evaluateAsync( + 'jsonStringify(() => extention.getHtmlContent(`$url`))'))) + .stringResult; + return res; + } + dynamic getFilterList() { _init(); try { diff --git a/lib/modules/browse/extension/edit_code.dart b/lib/modules/browse/extension/edit_code.dart index 7abc696..1455a35 100644 --- a/lib/modules/browse/extension/edit_code.dart +++ b/lib/modules/browse/extension/edit_code.dart @@ -46,7 +46,8 @@ class _CodeEditorState extends ConsumerState { ("search", 2), ("getDetail", 3), ("getPageList", 4), - ("getVideoList", 5) + ("getVideoList", 5), + ("getHtmlContent", 6) ]; int _serviceIndex = 0; @@ -204,7 +205,8 @@ class _CodeEditorState extends ConsumerState { }), if (_serviceIndex == 3 || _serviceIndex == 4 || - _serviceIndex == 5) + _serviceIndex == 5 || + _serviceIndex == 6) _textEditing("Url", context, "ex: url of the entry", (v) { _url = v; @@ -278,7 +280,7 @@ class _CodeEditorState extends ConsumerState { .toList(); } result = {"pages": result}; - } else { + } else if (_serviceIndex == 5) { if (source!.sourceCodeLanguage == SourceCodeLanguage.dart) { result = @@ -294,6 +296,18 @@ class _CodeEditorState extends ConsumerState { .map((e) => e.toJson()) .toList(); } + } else { + if (source!.sourceCodeLanguage == + SourceCodeLanguage.dart) { + result = + (await DartExtensionService( + source) + .getHtmlContent(_url)); + } else { + result = (await JsExtensionService( + source) + .getHtmlContent(_url)); + } } if (mounted) { setState(() { diff --git a/lib/modules/browse/extension/widgets/create_extension.dart b/lib/modules/browse/extension/widgets/create_extension.dart index 316f161..e83fab4 100644 --- a/lib/modules/browse/extension/widgets/create_extension.dart +++ b/lib/modules/browse/extension/widgets/create_extension.dart @@ -277,6 +277,12 @@ class TestSource extends MProvider { // TODO: implement } + // For novel html content + @override + Future getHtmlContent(String url) async { + // TODO: implement + } + // For anime episode video list @override Future> getVideoList(String url) async { @@ -335,6 +341,10 @@ class DefaultExtension extends MProvider { async getDetail(url) { throw new Error("getDetail not implemented"); } + // For novel html content + async getHtmlContent(url) { + throw new Error("getHtmlContent not implemented"); + } // For anime episode video list async getVideoList(url) { throw new Error("getVideoList not implemented"); diff --git a/lib/modules/novel/novel_reader_view.dart b/lib/modules/novel/novel_reader_view.dart index a0cae39..353efdb 100644 --- a/lib/modules/novel/novel_reader_view.dart +++ b/lib/modules/novel/novel_reader_view.dart @@ -11,7 +11,9 @@ import 'package:mangayomi/models/page.dart'; import 'package:mangayomi/modules/anime/widgets/desktop.dart'; import 'package:mangayomi/modules/manga/reader/widgets/btn_chapter_list_dialog.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; +import 'package:mangayomi/modules/novel/novel_reader_controller_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/services/get_html_content.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; import 'package:mangayomi/services/get_chapter_pages.dart'; @@ -33,11 +35,14 @@ class NovelReaderView extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - ref.watch(getChapterPagesProvider( - chapter: chapter, - )); // TODO fetch html body content + chapter.manga.loadSync(); + final source = getSource(chapter.manga.value!.lang!, chapter.manga.value!.source!); + final htmlContent = ref.watch(getHtmlContentProvider( + source: source!, + url: chapter.url! + )); - return NovelWebView(chapter: chapter); + return NovelWebView(chapter: chapter, htmlContent: htmlContent,); } } @@ -45,9 +50,11 @@ class NovelWebView extends ConsumerStatefulWidget { const NovelWebView({ super.key, required this.chapter, + required this.htmlContent, }); final Chapter chapter; + final AsyncValue htmlContent; @override ConsumerState createState() { @@ -57,8 +64,8 @@ class NovelWebView extends ConsumerStatefulWidget { class _NovelWebViewState extends ConsumerState with TickerProviderStateMixin { - late final ReaderController _readerController = - ref.read(readerControllerProvider(chapter: chapter).notifier); + late final NovelReaderController _readerController = + ref.read(novelReaderControllerProvider(chapter: chapter).notifier); bool isDesktop = Platform.isMacOS || Platform.isLinux || Platform.isWindows; @override @@ -66,7 +73,6 @@ class _NovelWebViewState extends ConsumerState _readerController.setMangaHistoryUpdate(); _readerController.checkAndSyncProgress(); _rebuildDetail.close(); - _autoScroll.value = false; clearGestureDetailsCache(); if (isDesktop) { setFullScreen(value: false); @@ -77,13 +83,8 @@ class _NovelWebViewState extends ConsumerState super.dispose(); } - late final _autoScroll = - ValueNotifier(_readerController.autoScrollValues().$1); - late Chapter chapter = widget.chapter; - final _failedToLoadImage = ValueNotifier(false); - final StreamController _rebuildDetail = StreamController.broadcast(); @override @@ -91,7 +92,6 @@ class _NovelWebViewState extends ConsumerState super.initState(); } - late int pagePreloadAmount = ref.watch(pagePreloadAmountStateProvider); late bool _isBookmarked = _readerController.getChapterBookmarked(); bool _isView = false; @@ -182,9 +182,11 @@ class _NovelWebViewState extends ConsumerState child: Column( children: [ Expanded( - child: SingleChildScrollView( + child: widget.htmlContent.when( + data: (htmlContent) => SingleChildScrollView( + physics: const BouncingScrollPhysics(), child: Html( - data: """""", + data: htmlContent, style: { "*": Style( backgroundColor: Colors.white, @@ -192,7 +194,9 @@ class _NovelWebViewState extends ConsumerState }, shrinkWrap: true, ), - ), + ), + loading: () => const Center(child: CircularProgressIndicator(),), + error: (err, stack) => Center(child: Text(err.toString()),)), ), _appBar(), ], diff --git a/lib/services/get_html_content.dart b/lib/services/get_html_content.dart new file mode 100644 index 0000000..7c2d8a9 --- /dev/null +++ b/lib/services/get_html_content.dart @@ -0,0 +1,21 @@ +import 'package:mangayomi/eval/dart/service.dart'; +import 'package:mangayomi/eval/javascript/service.dart'; +import 'package:mangayomi/models/source.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +part 'get_html_content.g.dart'; + +@riverpod +Future getHtmlContent( + Ref ref, { + required String url, + required Source source, +}) async { + String? html; + if (source.sourceCodeLanguage == SourceCodeLanguage.dart) { + html = await DartExtensionService(source).getHtmlContent(url); + } else { + html = await JsExtensionService(source).getHtmlContent(url); + } + return html; +} diff --git a/lib/services/get_html_content.g.dart b/lib/services/get_html_content.g.dart new file mode 100644 index 0000000..fbd4207 --- /dev/null +++ b/lib/services/get_html_content.g.dart @@ -0,0 +1,177 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'get_html_content.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$getHtmlContentHash() => r'1d7f76fb0f3b3cc9a5012746ec478269c0f0d5e0'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +/// See also [getHtmlContent]. +@ProviderFor(getHtmlContent) +const getHtmlContentProvider = GetHtmlContentFamily(); + +/// See also [getHtmlContent]. +class GetHtmlContentFamily extends Family> { + /// See also [getHtmlContent]. + const GetHtmlContentFamily(); + + /// See also [getHtmlContent]. + GetHtmlContentProvider call({ + required String url, + required Source source, + }) { + return GetHtmlContentProvider( + url: url, + source: source, + ); + } + + @override + GetHtmlContentProvider getProviderOverride( + covariant GetHtmlContentProvider provider, + ) { + return call( + url: provider.url, + source: provider.source, + ); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'getHtmlContentProvider'; +} + +/// See also [getHtmlContent]. +class GetHtmlContentProvider extends AutoDisposeFutureProvider { + /// See also [getHtmlContent]. + GetHtmlContentProvider({ + required String url, + required Source source, + }) : this._internal( + (ref) => getHtmlContent( + ref as GetHtmlContentRef, + url: url, + source: source, + ), + from: getHtmlContentProvider, + name: r'getHtmlContentProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') + ? null + : _$getHtmlContentHash, + dependencies: GetHtmlContentFamily._dependencies, + allTransitiveDependencies: + GetHtmlContentFamily._allTransitiveDependencies, + url: url, + source: source, + ); + + GetHtmlContentProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.url, + required this.source, + }) : super.internal(); + + final String url; + final Source source; + + @override + Override overrideWith( + FutureOr Function(GetHtmlContentRef provider) create, + ) { + return ProviderOverride( + origin: this, + override: GetHtmlContentProvider._internal( + (ref) => create(ref as GetHtmlContentRef), + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + url: url, + source: source, + ), + ); + } + + @override + AutoDisposeFutureProviderElement createElement() { + return _GetHtmlContentProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is GetHtmlContentProvider && + other.url == url && + other.source == source; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, url.hashCode); + hash = _SystemHash.combine(hash, source.hashCode); + + return _SystemHash.finish(hash); + } +} + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +mixin GetHtmlContentRef on AutoDisposeFutureProviderRef { + /// The parameter `url` of this provider. + String get url; + + /// The parameter `source` of this provider. + Source get source; +} + +class _GetHtmlContentProviderElement + extends AutoDisposeFutureProviderElement with GetHtmlContentRef { + _GetHtmlContentProviderElement(super.provider); + + @override + String get url => (origin as GetHtmlContentProvider).url; + @override + Source get source => (origin as GetHtmlContentProvider).source; +} +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/pubspec.lock b/pubspec.lock index 6a73d01..16b6bc2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,23 +5,23 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834 + sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" url: "https://pub.dev" source: hosted - version: "72.0.0" + version: "76.0.0" _macros: dependency: transitive description: dart source: sdk - version: "0.3.2" + version: "0.3.3" analyzer: dependency: "direct overridden" description: name: analyzer - sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139 + sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" url: "https://pub.dev" source: hosted - version: "6.7.0" + version: "6.11.0" analyzer_plugin: dependency: transitive description: @@ -98,10 +98,10 @@ packages: dependency: transitive description: name: build - sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" build_cli_annotations: dependency: transitive description: @@ -114,42 +114,42 @@ packages: dependency: transitive description: name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" build_daemon: dependency: transitive description: name: build_daemon - sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" + sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.3" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + sha256: "99d3980049739a985cf9b21f30881f46db3ebc62c5b8d5e60e27440876b1ba1e" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" + sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573" url: "https://pub.dev" source: hosted - version: "2.4.13" + version: "2.4.14" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" url: "https://pub.dev" source: hosted - version: "7.3.2" + version: "8.0.0" built_collection: dependency: transitive description: @@ -162,10 +162,10 @@ packages: dependency: transitive description: name: built_value - sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" url: "https://pub.dev" source: hosted - version: "8.9.2" + version: "8.9.3" change_case: dependency: transitive description: @@ -282,10 +282,10 @@ packages: dependency: transitive description: name: custom_lint_visitor - sha256: "8aeb3b6ae2bb765e7716b93d1d10e8356d04e0ff6d7592de6ee04e0dd7d6587d" + sha256: bfe9b7a09c4775a587b58d10ebb871d4fe618237639b1e84d5ec62d7dfef25f9 url: "https://pub.dev" source: hosted - version: "1.0.0+6.7.0" + version: "1.0.0+6.11.0" dart_eval: dependency: "direct main" description: @@ -355,10 +355,10 @@ packages: dependency: transitive description: name: equatable - sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.0.7" exception_templates: dependency: transitive description: @@ -435,10 +435,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "16dc141db5a2ccc6520ebb6a2eb5945b1b09e95085c021d9f914f8ded7f1465c" + sha256: c2376a6aae82358a9f9ccdd7d1f4006d08faa39a2767cce01031d9f593a8bd3b url: "https://pub.dev" source: hosted - version: "8.1.4" + version: "8.1.6" fixnum: dependency: transitive description: @@ -581,10 +581,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "9b78450b89f059e96c9ebb355fa6b3df1d6b330436e0b885fb49594c41721398" + sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" url: "https://pub.dev" source: hosted - version: "2.0.23" + version: "2.0.24" flutter_qjs: dependency: "direct main" description: @@ -680,10 +680,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: "8ae664a70174163b9f65ea68dd8673e29db8f9095de7b5cd00e167c621f4fef5" + sha256: "2fd11229f59e23e967b0775df8d5948a519cd7e1e8b6e849729e010587b46539" url: "https://pub.dev" source: hosted - version: "14.6.0" + version: "14.6.2" google_fonts: dependency: "direct main" description: @@ -760,10 +760,10 @@ packages: dependency: transitive description: name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" http_parser: dependency: transitive description: @@ -800,10 +800,10 @@ packages: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" iregexp: dependency: transitive description: @@ -888,18 +888,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -944,10 +944,10 @@ packages: dependency: transitive description: name: macros - sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" url: "https://pub.dev" source: hosted - version: "0.1.2-main.4" + version: "0.1.3-main.0" matcher: dependency: transitive description: @@ -1083,26 +1083,26 @@ packages: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce + sha256: "70c421fe9d9cc1a9a7f3b05ae56befd469fe4f8daa3b484823141a55442d858d" url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.1.2" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 + sha256: a5ef9986efc7bf772f2696183a3992615baa76c1ffb1189318dd8803778fb05b url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" path: dependency: "direct main" description: @@ -1123,18 +1123,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a + sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" url: "https://pub.dev" source: hosted - version: "2.2.12" + version: "2.2.15" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" path_provider_linux: dependency: transitive description: @@ -1267,10 +1267,10 @@ packages: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" pubspec_parse: dependency: transitive description: @@ -1426,18 +1426,18 @@ packages: dependency: "direct main" description: name: share_plus - sha256: "9c9bafd4060728d7cdb2464c341743adbd79d327cb067ec7afb64583540b47c8" + sha256: "6327c3f233729374d0abaafd61f6846115b2a481b4feddd8534211dc10659400" url: "https://pub.dev" source: hosted - version: "10.1.2" + version: "10.1.3" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: c57c0bbfec7142e3a0f55633be504b796af72e60e3c791b44d5a017b985f7a48 + sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b url: "https://pub.dev" source: hosted - version: "5.0.1" + version: "5.0.2" shelf: dependency: transitive description: @@ -1450,15 +1450,15 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_gen: dependency: transitive description: @@ -1487,10 +1487,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" state_notifier: dependency: transitive description: @@ -1511,18 +1511,18 @@ packages: dependency: transitive description: name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" super_sliver_list: dependency: "direct main" description: @@ -1551,10 +1551,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" time: dependency: transitive description: @@ -1567,10 +1567,10 @@ packages: dependency: transitive description: name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" tuple: dependency: transitive description: @@ -1623,10 +1623,10 @@ packages: dependency: transitive description: name: url_launcher_ios - sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_linux: dependency: transitive description: @@ -1639,10 +1639,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_platform_interface: dependency: transitive description: @@ -1687,10 +1687,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.3.0" volume_controller: dependency: transitive description: @@ -1719,10 +1719,10 @@ packages: dependency: transitive description: name: watcher - sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web: dependency: transitive description: @@ -1751,10 +1751,10 @@ packages: dependency: transitive description: name: win32 - sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2" + sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69" url: "https://pub.dev" source: hosted - version: "5.8.0" + version: "5.9.0" window_manager: dependency: "direct main" description: @@ -1807,10 +1807,10 @@ packages: dependency: transitive description: name: xxh3 - sha256: cbeb0e1d10f4c6bf67b650f395eac0cc689425b5efc2ba0cc3d3e069a0beaeec + sha256: "399a0438f5d426785723c99da6b16e136f4953fb1e9db0bf270bd41dd4619916" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" yaml: dependency: transitive description: @@ -1828,5 +1828,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=3.5.4 <4.0.0" + dart: ">=3.6.0 <4.0.0" flutter: ">=3.24.0"