diff --git a/example/linux/flutter/generated_plugin_registrant.cc b/example/linux/flutter/generated_plugin_registrant.cc index b2b41766..1ef38c29 100644 --- a/example/linux/flutter/generated_plugin_registrant.cc +++ b/example/linux/flutter/generated_plugin_registrant.cc @@ -6,11 +6,15 @@ #include "generated_plugin_registrant.h" +#include #include #include #include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) file_saver_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSaverPlugin"); + file_saver_plugin_register_with_registrar(file_saver_registrar); g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake index 615cc69d..cba264c8 100644 --- a/example/linux/flutter/generated_plugins.cmake +++ b/example/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_saver file_selector_linux printing url_launcher_linux diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift index 43799c62..bc54c443 100644 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import file_saver import file_selector_macos import flutter_local_notifications import in_app_review @@ -20,6 +21,7 @@ import sqflite import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FileSaverPlugin.register(with: registry.registrar(forPlugin: "FileSaverPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin")) diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index a37d8887..ce4b72aa 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -9,17 +9,21 @@ PODS: - FMDB/standard (2.7.5) - in_app_review (0.2.0): - FlutterMacOS - - package_info_plus_macos (0.0.1): + - package_info_plus (0.0.1): - FlutterMacOS - - path_provider_macos (0.0.1): + - path_provider_foundation (0.0.1): + - Flutter - FlutterMacOS - - photo_manager (1.0.0): + - photo_manager (2.0.0): - Flutter - FlutterMacOS - printing (1.0.0): - FlutterMacOS - share_plus_macos (0.0.1): - FlutterMacOS + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS - shared_preferences_macos (0.0.1): - FlutterMacOS - sign_in_with_apple (0.0.1): @@ -35,11 +39,12 @@ DEPENDENCIES: - flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - in_app_review (from `Flutter/ephemeral/.symlinks/plugins/in_app_review/macos`) - - package_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos`) - - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) + - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - photo_manager (from `Flutter/ephemeral/.symlinks/plugins/photo_manager/macos`) - printing (from `Flutter/ephemeral/.symlinks/plugins/printing/macos`) - share_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`) - sign_in_with_apple (from `Flutter/ephemeral/.symlinks/plugins/sign_in_with_apple/macos`) - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`) @@ -58,16 +63,18 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral in_app_review: :path: Flutter/ephemeral/.symlinks/plugins/in_app_review/macos - package_info_plus_macos: - :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos - path_provider_macos: - :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos + package_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin photo_manager: :path: Flutter/ephemeral/.symlinks/plugins/photo_manager/macos printing: :path: Flutter/ephemeral/.symlinks/plugins/printing/macos share_plus_macos: :path: Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin shared_preferences_macos: :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos sign_in_with_apple: @@ -78,21 +85,22 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos SPEC CHECKSUMS: - file_selector_macos: ff6dc948d4ddd34e8602a1f60b7d0b4cc6051a47 + file_selector_macos: 468fb6b81fac7c0e88d71317f3eec34c3b008ff9 flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4 - FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a in_app_review: a850789fad746e89bce03d4aeee8078b45a53fd0 - package_info_plus_macos: f010621b07802a241d96d01876d6705f15e77c1c - path_provider_macos: a0a3fd666cb7cd0448e936fb4abad4052961002b - photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463 - printing: e4b7e232ff3d5d50a70b20d959aa71035a5c31f9 + package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce + path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c + photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604 + printing: 1dd6a1fce2209ec240698e2439a4adbb9b427637 share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4 - shared_preferences_macos: 480ce071d0666e37cef23fe6c702293a3d21799e + shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c + shared_preferences_macos: 8b221d457159a85f478c0b9d2f19aeae9feff475 sign_in_with_apple: a9e97e744e8edc36aefc2723111f652102a7a727 sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea url_launcher_macos: 45af3d61de06997666568a7149c1be98b41c95d4 PODFILE CHECKSUM: 0d3963a09fc94f580682bd88480486da345dc3f0 -COCOAPODS: 1.11.2 +COCOAPODS: 1.13.0 diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index 002774d9..bf6a9dbc 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -26,6 +26,7 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + DEA92184620A62F2CE182A84 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7C8DB343FD2544B95AF341F /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -52,6 +53,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2C71516EFCF18B5572A5064A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; 33CC10ED2044A3C60003C045 /* ap_common_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ap_common_example.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -67,7 +69,10 @@ 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 8EAECB9D8BA413B18CCC478D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + A7C8DB343FD2544B95AF341F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BAA11D81E200861EAB8329DE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -75,6 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DEA92184620A62F2CE182A84 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -99,6 +105,7 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, + BE0CA62EBB110EB2DB26AB6D /* Pods */, ); sourceTree = ""; }; @@ -145,9 +152,21 @@ path = Runner; sourceTree = ""; }; + BE0CA62EBB110EB2DB26AB6D /* Pods */ = { + isa = PBXGroup; + children = ( + 2C71516EFCF18B5572A5064A /* Pods-Runner.debug.xcconfig */, + 8EAECB9D8BA413B18CCC478D /* Pods-Runner.release.xcconfig */, + BAA11D81E200861EAB8329DE /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( + A7C8DB343FD2544B95AF341F /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -159,11 +178,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + F2DA6A357D165D42B2E1D5A8 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, + 1678736B543F2B9A390FFB44 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -182,7 +203,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -233,8 +254,26 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1678736B543F2B9A390FFB44 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -270,6 +309,28 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; + F2DA6A357D165D42B2E1D5A8 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -344,7 +405,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -423,7 +484,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -470,7 +531,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 50dc6688..4e619e93 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ #include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + FileSaverPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSaverPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); PrintingPluginRegisterWithRegistrar( diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake index 1d28ddd6..9aad4dc8 100644 --- a/example/windows/flutter/generated_plugins.cmake +++ b/example/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_saver file_selector_windows printing url_launcher_windows diff --git a/lib/utils/ap_utils.dart b/lib/utils/ap_utils.dart index e517cec2..898c3aed 100644 --- a/lib/utils/ap_utils.dart +++ b/lib/utils/ap_utils.dart @@ -4,9 +4,9 @@ import 'package:ap_common/callback/general_callback.dart'; import 'package:ap_common/resources/ap_theme.dart'; import 'package:ap_common/utils/ap_localizations.dart'; import 'package:ap_common/utils/crashlytics_utils.dart'; -import 'package:ap_common/utils/file_saver_web.dart'; import 'package:ap_common/utils/toast.dart'; import 'package:ap_common/widgets/yes_no_dialog.dart'; +import 'package:file_saver/file_saver.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; @@ -245,23 +245,9 @@ class ApUtils { if (hasGrantPermission == PermissionState.authorized || hasGrantPermission == PermissionState.limited) { final Uint8List pngBytes = byteData.buffer.asUint8List(); - String downloadDir = ''; - if (kIsWeb) { - downloadDir = ''; - } else if (Platform.isMacOS || Platform.isWindows || Platform.isLinux) { - downloadDir = (await getDownloadsDirectory())!.path; - } else { - downloadDir = ''; - } - final String filePath = path.join(downloadDir, '$fileName.png'); bool success = true; - if (kIsWeb) { - await FileSaverWeb().downloadFile( - pngBytes, - fileName, - 'image/png', - ); - } else if (Platform.isAndroid || Platform.isIOS) { + String filePath = '$fileName.png'; + if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { final String tempPath = path.join( (await getApplicationDocumentsDirectory()).path, filePath, @@ -276,7 +262,10 @@ class ApUtils { if (kDebugMode) debugPrint(imageEntity?.title); success = imageEntity != null; } else { - await File(filePath).writeAsBytes(pngBytes); + filePath = await FileSaver.instance.saveFile( + name: '$fileName.png', + bytes: pngBytes, + ); } onSuccess?.call( success diff --git a/lib/utils/file_saver_web.dart b/lib/utils/file_saver_web.dart deleted file mode 100644 index f00cd321..00000000 --- a/lib/utils/file_saver_web.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'dart:async'; -import 'dart:typed_data'; - -// In order to *not* need this ignore, consider extracting the "web" version -// of your plugin as a separate package, instead of inlining it in the same -// package as the core of your plugin. -// ignore: avoid_web_libraries_in_flutter -import 'package:universal_html/html.dart'; - -/// Reference: https://github.com/incrediblezayed/file_saver/blob/main/lib/file_saver_web.dart -/// A web implementation of the FileSaver plugin. -class FileSaverWeb { - Future downloadFile( - Uint8List bytes, - String name, - String type, - ) async { - bool success = false; - try { - final String url = - Url.createObjectUrlFromBlob(Blob([bytes], type)); - final HtmlDocument htmlDocument = document; - final AnchorElement anchor = - htmlDocument.createElement('a') as AnchorElement; - //ignore: unsafe_html - anchor.href = url; - anchor.style.display = name; - anchor.download = name; - document.body!.children.add(anchor); - anchor.click(); - document.body!.children.remove(anchor); - success = true; - } catch (e) { - rethrow; - } - return success; - } -} diff --git a/pubspec.lock b/pubspec.lock index a7b792d4..e3f86210 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -201,14 +201,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - charcode: - dependency: transitive - description: - name: charcode - sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 - url: "https://pub.dev" - source: hosted - version: "1.3.1" checked_yaml: dependency: transitive description: @@ -353,6 +345,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" + file_saver: + dependency: "direct main" + description: + name: file_saver + sha256: bdebc720e17b3e01aba59da69b6d47020a7e5ba7d5c75bd9194f9618d5f16ef4 + url: "https://pub.dev" + source: hosted + version: "0.2.12" file_selector_linux: dependency: transitive description: @@ -966,7 +966,7 @@ packages: source: hosted version: "0.14.0" platform: - dependency: "direct main" + dependency: transitive description: name: platform sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" @@ -1338,14 +1338,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.2" - universal_html: - dependency: "direct main" - description: - name: universal_html - sha256: f2e0ff0c4af8e4bbda4d273ca4a11be4055414f478fad5c161609b74790ff696 - url: "https://pub.dev" - source: hosted - version: "2.2.2" universal_io: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 3e0be802..16dea1e9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,8 +23,6 @@ dependencies: flutter_local_notifications: ^9.8.0+1 timezone: ^0.8.0 jwt_decoder: ^2.0.1 - universal_html: ^2.0.8 - platform: ^3.1.0 json_annotation: ^4.6.0 # Flutter UI Package photo_view: ^0.14.0 @@ -50,6 +48,7 @@ dependencies: sign_in_with_apple: ^4.0.0 image_picker: ^1.0.7 photo_manager: ^3.0.0 + file_saver: ^0.2.12 app_tracking_transparency: ^2.0.2+4 dependency_overrides: