diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..e0f15db2
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "java.configuration.updateBuildConfiguration": "automatic"
+}
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index ed54c7ad..00000000
--- a/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-<b>BREAKING CHANGES IN V2</b>
-
-CacheManager v2 introduced some breaking changes when configuring a custom CacheManager. [See the bottom of this page
- for the changes.](#breaking-changes-in-v2)
-
-# flutter_cache_manager
-
-[![pub package](https://img.shields.io/pub/v/flutter_cache_manager.svg)](https://pub.dartlang.org/packages/flutter_cache_manager)
-[![Build Status](https://app.bitrise.io/app/b3454de795b5c22a/status.svg?token=vEfW1ztZ-tkoUx64yXeklg&branch=master)](https://app.bitrise.io/app/b3454de795b5c22a)
-[![codecov](https://codecov.io/gh/Baseflow/flutter_cache_manager/branch/master/graph/badge.svg)](https://codecov.io/gh/Baseflow/flutter_cache_manager)
-
-A CacheManager to download and cache files in the cache directory of the app. Various settings on how long to keep a file can be changed.
-
-It uses the cache-control http header to efficiently retrieve files.
-
-The more basic usage is explained here. See the complete docs for more info.
-
-
-## Usage
-
-The cache manager can be used to get a file on various ways
-The easiest way to get a single file is call `.getSingleFile`.
-
-```
-    var file = await DefaultCacheManager().getSingleFile(url);
-```
-`getFileStream(url)` returns a stream with the first result being the cached file and later optionally the downloaded file.
-
-`getFileStream(url, withProgress: true)` when you set withProgress on true, this stream will also emit DownloadProgress when the file is not found in the cache.
-
-`downloadFile(url)` directly downloads from the web.
-
-`getFileFromCache` only retrieves from cache and returns no file when the file is not in the cache.
-
-
-`putFile` gives the option to put a new file into the cache without downloading it.
-
-`removeFile` removes a file from the cache. 
-
-`emptyCache` removes all files from the cache. 
-
-## Other implementations
-When your files are stored on Firebase Storage you can use [flutter_cache_manager_firebase](https://pub.dev/packages/flutter_cache_manager_firebase).
-
-## Customize
-The cache manager is customizable by creating a new CacheManager. It is very important to not create more than 1
- CacheManager instance with the same key as these bite each other. In the example down here the manager is created as a 
- Singleton, but you could also use for example Provider to Provide a CacheManager on the top level of your app.
-Below is an example with other settings for the maximum age of files, maximum number of objects
-and a custom FileService. The key parameter in the constructor is mandatory, all other variables are optional.
-
-```
-class CustomCacheManager {
-  static const key = 'customCacheKey';
-  static CacheManager instance = CacheManager(
-    Config(
-      key,
-      stalePeriod: const Duration(days: 7),
-      maxNrOfCacheObjects: 20,
-      repo: JsonCacheInfoRepository(databaseName: key),
-      fileSystem: IOFileSystem(key),
-      fileService: HttpFileService(),
-    ),
-  );
-}
-```
-## Frequently Asked Questions
-- [How are the cache files stored?](#how-are-the-cache-files-stored)
-- [When are the cached files updated?](#when-are-the-cached-files-updated)
-- [When are cached files removed?](#when-are-cached-files-removed)
-
-
-### How are the cache files stored?
-By default the cached files are stored in the temporary directory of the app. This means the OS can delete the files any time.
-
-Information about the files is stored in a database using sqflite on Android, iOS and macOs, or in a plain JSON file
- on other platforms. The file name of the database is the key of the cacheManager, that's why that has to be unique.
-
-### When are the cached files updated?
-A valid url response should contain a Cache-Control header. More info on the header can be found 
-[here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control), but in summary it says for how long
-the image can be expected to be up to date. It also contains an 'eTag' which can be used to check (after that time) 
-whether the file did change or if it is actually still valid.
-
-When a file is in the cache that is always directly returned when calling `getSingleFile` or `getFileStream`. 
-After that the information is check if the file is actually still valid. If the file is outdated according to the 
-Cache-Control headers the manager tries to update the file and store the new one in the cache. When you use 
-`getFileStream` this updated file will also be returned in the stream.
-
-### When are cached files removed?
-The files can be removed by the cache manager or by the operating system. By default the files are stored in a cache
- folder, which is sometimes cleaned for example on Android with an app update.
-
-The cache manager uses 2 variables to determine when to delete a file, the `maxNrOfCacheObjects` and the `stalePeriod`.
-The cache knows when files have been used latest. When cleaning the cache (which happens continuously), the cache
-deletes files when there are too many, ordered by last use, and when files just haven't been used for longer than
-the stale period.
-
-
-## Breaking changes in v2
-- There is no longer a need to extend on BaseCacheManager, you can directly call the constructor. The BaseCacheManager
- is therefore renamed to CacheManager as it is not really just a 'base' anymore.
-
-- The constructor now expects a Config object with some settings you were used to, but some are slightly different.
-For example the system where you want to store your files is not just a dictionary anymore, but a FileSystem. That way
-you have more freedom on where to store your files.
diff --git a/README.md b/README.md
new file mode 120000
index 00000000..53a16f37
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+flutter_cache_manager/README.md
\ No newline at end of file
diff --git a/flutter_cache_manager/README.md b/flutter_cache_manager/README.md
index 8ea4e19e..3c5b77e4 100644
--- a/flutter_cache_manager/README.md
+++ b/flutter_cache_manager/README.md
@@ -21,8 +21,8 @@ The more basic usage is explained here. See the complete docs for more info.
 The cache manager can be used to get a file on various ways
 The easiest way to get a single file is call `.getSingleFile`.
 
-```
-    var file = await DefaultCacheManager().getSingleFile(url);
+```dart
+var file = await DefaultCacheManager().getSingleFile(url);
 ```
 `getFileStream(url)` returns a stream with the first result being the cached file and later optionally the downloaded file.
 
@@ -43,7 +43,7 @@ The easiest way to get a single file is call `.getSingleFile`.
 If you use the ImageCacheManager mixin on the CacheManager (which is already done on the DefaultCacheManager) you 
 get the following `getImageFile` method for free:
 
-```
+```dart
 Stream<FileResponse> getImageFile(String url, {
     String key,
     Map<String, String> headers,
@@ -66,7 +66,7 @@ The cache manager is customizable by creating a new CacheManager. It is very imp
 Below is an example with other settings for the maximum age of files, maximum number of objects
 and a custom FileService. The key parameter in the constructor is mandatory, all other variables are optional.
 
-```
+```dart
 class CustomCacheManager {
   static const key = 'customCacheKey';
   static CacheManager instance = CacheManager(
diff --git a/flutter_cache_manager/example/.gitignore b/flutter_cache_manager/example/.gitignore
index 24476c5d..79c113f9 100644
--- a/flutter_cache_manager/example/.gitignore
+++ b/flutter_cache_manager/example/.gitignore
@@ -5,9 +5,11 @@
 *.swp
 .DS_Store
 .atom/
+.build/
 .buildlog/
 .history
 .svn/
+.swiftpm/
 migrate_working_dir/
 
 # IntelliJ related
@@ -27,7 +29,6 @@ migrate_working_dir/
 .dart_tool/
 .flutter-plugins
 .flutter-plugins-dependencies
-.packages
 .pub-cache/
 .pub/
 /build/
diff --git a/flutter_cache_manager/example/.metadata b/flutter_cache_manager/example/.metadata
index 8a0ce793..9a674c61 100644
--- a/flutter_cache_manager/example/.metadata
+++ b/flutter_cache_manager/example/.metadata
@@ -4,7 +4,7 @@
 # This file should be version controlled and should not be manually edited.
 
 version:
-  revision: "b0850beeb25f6d5b10426284f506557f66181b36"
+  revision: "35c388afb57ef061d06a39b537336c87e0e3d1b1"
   channel: "stable"
 
 project_type: app
@@ -13,23 +13,26 @@ project_type: app
 migration:
   platforms:
     - platform: root
-      create_revision: b0850beeb25f6d5b10426284f506557f66181b36
-      base_revision: b0850beeb25f6d5b10426284f506557f66181b36
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
     - platform: android
-      create_revision: b0850beeb25f6d5b10426284f506557f66181b36
-      base_revision: b0850beeb25f6d5b10426284f506557f66181b36
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
     - platform: ios
-      create_revision: b0850beeb25f6d5b10426284f506557f66181b36
-      base_revision: b0850beeb25f6d5b10426284f506557f66181b36
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+    - platform: linux
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
     - platform: macos
-      create_revision: b0850beeb25f6d5b10426284f506557f66181b36
-      base_revision: b0850beeb25f6d5b10426284f506557f66181b36
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
     - platform: web
-      create_revision: b0850beeb25f6d5b10426284f506557f66181b36
-      base_revision: b0850beeb25f6d5b10426284f506557f66181b36
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
     - platform: windows
-      create_revision: b0850beeb25f6d5b10426284f506557f66181b36
-      base_revision: b0850beeb25f6d5b10426284f506557f66181b36
+      create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
+      base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
 
   # User provided section
 
diff --git a/flutter_cache_manager/example/README.md b/flutter_cache_manager/example/README.md
index 75a7c517..2b3fce4c 100644
--- a/flutter_cache_manager/example/README.md
+++ b/flutter_cache_manager/example/README.md
@@ -1 +1,16 @@
-# A project that showcases usage of flutter_cache_manager
+# example
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+
+For help getting started with Flutter development, view the
+[online documentation](https://docs.flutter.dev/), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/flutter_cache_manager/example/analysis_options.yaml b/flutter_cache_manager/example/analysis_options.yaml
index f9b30346..0d290213 100644
--- a/flutter_cache_manager/example/analysis_options.yaml
+++ b/flutter_cache_manager/example/analysis_options.yaml
@@ -1 +1,28 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
 include: package:flutter_lints/flutter.yaml
+
+linter:
+  # The lint rules applied to this project can be customized in the
+  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+  # included above or to enable additional rules. A list of all available lints
+  # and their documentation is published at https://dart.dev/lints.
+  #
+  # Instead of disabling a lint rule for the entire project in the
+  # section below, it can also be suppressed for a single line of code
+  # or a specific dart file by using the `// ignore: name_of_lint` and
+  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+  # producing the lint.
+  rules:
+    # avoid_print: false  # Uncomment to disable the `avoid_print` rule
+    # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/flutter_cache_manager/example/android/.gitignore b/flutter_cache_manager/example/android/.gitignore
index 6f568019..be3943c9 100644
--- a/flutter_cache_manager/example/android/.gitignore
+++ b/flutter_cache_manager/example/android/.gitignore
@@ -5,9 +5,10 @@ gradle-wrapper.jar
 /gradlew.bat
 /local.properties
 GeneratedPluginRegistrant.java
+.cxx/
 
 # Remember to never publicly share your keystore.
-# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+# See https://flutter.dev/to/reference-keystore
 key.properties
 **/*.keystore
 **/*.jks
diff --git a/flutter_cache_manager/example/android/app/build.gradle b/flutter_cache_manager/example/android/app/build.gradle
deleted file mode 100644
index 2a2d082b..00000000
--- a/flutter_cache_manager/example/android/app/build.gradle
+++ /dev/null
@@ -1,58 +0,0 @@
-plugins {
-    id "com.android.application"
-    id "kotlin-android"
-    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
-    id "dev.flutter.flutter-gradle-plugin"
-}
-
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file("local.properties")
-if (localPropertiesFile.exists()) {
-    localPropertiesFile.withReader("UTF-8") { reader ->
-        localProperties.load(reader)
-    }
-}
-
-def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
-if (flutterVersionCode == null) {
-    flutterVersionCode = "1"
-}
-
-def flutterVersionName = localProperties.getProperty("flutter.versionName")
-if (flutterVersionName == null) {
-    flutterVersionName = "1.0"
-}
-
-android {
-    namespace = "com.example.example"
-    compileSdk = flutter.compileSdkVersion
-    ndkVersion = flutter.ndkVersion
-
-    compileOptions {
-        sourceCompatibility = JavaVersion.VERSION_1_8
-        targetCompatibility = JavaVersion.VERSION_1_8
-    }
-
-    defaultConfig {
-        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
-        applicationId = "com.example.example"
-        // You can update the following values to match your application needs.
-        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
-        minSdk = flutter.minSdkVersion
-        targetSdk = flutter.targetSdkVersion
-        versionCode = flutterVersionCode.toInteger()
-        versionName = flutterVersionName
-    }
-
-    buildTypes {
-        release {
-            // TODO: Add your own signing config for the release build.
-            // Signing with the debug keys for now, so `flutter run --release` works.
-            signingConfig = signingConfigs.debug
-        }
-    }
-}
-
-flutter {
-    source = "../.."
-}
diff --git a/flutter_cache_manager/example/android/app/build.gradle.kts b/flutter_cache_manager/example/android/app/build.gradle.kts
new file mode 100644
index 00000000..d77dd1aa
--- /dev/null
+++ b/flutter_cache_manager/example/android/app/build.gradle.kts
@@ -0,0 +1,44 @@
+plugins {
+    id("com.android.application")
+    id("kotlin-android")
+    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+    id("dev.flutter.flutter-gradle-plugin")
+}
+
+android {
+    namespace = "com.example.example"
+    compileSdk = flutter.compileSdkVersion
+    ndkVersion = "27.0.12077973"
+
+    compileOptions {
+        sourceCompatibility = JavaVersion.VERSION_11
+        targetCompatibility = JavaVersion.VERSION_11
+    }
+
+    kotlinOptions {
+        jvmTarget = JavaVersion.VERSION_11.toString()
+    }
+
+    defaultConfig {
+        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+        applicationId = "com.example.example"
+        // You can update the following values to match your application needs.
+        // For more information, see: https://flutter.dev/to/review-gradle-config.
+        minSdk = flutter.minSdkVersion
+        targetSdk = flutter.targetSdkVersion
+        versionCode = flutter.versionCode
+        versionName = flutter.versionName
+    }
+
+    buildTypes {
+        release {
+            // TODO: Add your own signing config for the release build.
+            // Signing with the debug keys for now, so `flutter run --release` works.
+            signingConfig = signingConfigs.getByName("debug")
+        }
+    }
+}
+
+flutter {
+    source = "../.."
+}
diff --git a/flutter_cache_manager/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt b/flutter_cache_manager/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
index 70f8f08f..ac81bae6 100644
--- a/flutter_cache_manager/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
+++ b/flutter_cache_manager/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
@@ -2,4 +2,4 @@ package com.example.example
 
 import io.flutter.embedding.android.FlutterActivity
 
-class MainActivity: FlutterActivity()
+class MainActivity : FlutterActivity()
diff --git a/flutter_cache_manager/example/android/build.gradle b/flutter_cache_manager/example/android/build.gradle
deleted file mode 100644
index d2ffbffa..00000000
--- a/flutter_cache_manager/example/android/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-allprojects {
-    repositories {
-        google()
-        mavenCentral()
-    }
-}
-
-rootProject.buildDir = "../build"
-subprojects {
-    project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
-    project.evaluationDependsOn(":app")
-}
-
-tasks.register("clean", Delete) {
-    delete rootProject.buildDir
-}
diff --git a/flutter_cache_manager/example/android/build.gradle.kts b/flutter_cache_manager/example/android/build.gradle.kts
new file mode 100644
index 00000000..89176ef4
--- /dev/null
+++ b/flutter_cache_manager/example/android/build.gradle.kts
@@ -0,0 +1,21 @@
+allprojects {
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
+
+val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
+rootProject.layout.buildDirectory.value(newBuildDir)
+
+subprojects {
+    val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
+    project.layout.buildDirectory.value(newSubprojectBuildDir)
+}
+subprojects {
+    project.evaluationDependsOn(":app")
+}
+
+tasks.register<Delete>("clean") {
+    delete(rootProject.layout.buildDirectory)
+}
diff --git a/flutter_cache_manager/example/android/gradle.properties b/flutter_cache_manager/example/android/gradle.properties
index 3b5b324f..f018a618 100644
--- a/flutter_cache_manager/example/android/gradle.properties
+++ b/flutter_cache_manager/example/android/gradle.properties
@@ -1,3 +1,3 @@
-org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
+org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
 android.useAndroidX=true
 android.enableJetifier=true
diff --git a/flutter_cache_manager/example/android/gradle/wrapper/gradle-wrapper.properties b/flutter_cache_manager/example/android/gradle/wrapper/gradle-wrapper.properties
index e1ca574e..afa1e8eb 100644
--- a/flutter_cache_manager/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/flutter_cache_manager/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
diff --git a/flutter_cache_manager/example/android/settings.gradle b/flutter_cache_manager/example/android/settings.gradle
deleted file mode 100644
index 536165d3..00000000
--- a/flutter_cache_manager/example/android/settings.gradle
+++ /dev/null
@@ -1,25 +0,0 @@
-pluginManagement {
-    def flutterSdkPath = {
-        def properties = new Properties()
-        file("local.properties").withInputStream { properties.load(it) }
-        def flutterSdkPath = properties.getProperty("flutter.sdk")
-        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-        return flutterSdkPath
-    }()
-
-    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
-
-    repositories {
-        google()
-        mavenCentral()
-        gradlePluginPortal()
-    }
-}
-
-plugins {
-    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
-    id "com.android.application" version "7.3.0" apply false
-    id "org.jetbrains.kotlin.android" version "1.7.10" apply false
-}
-
-include ":app"
diff --git a/flutter_cache_manager/example/android/settings.gradle.kts b/flutter_cache_manager/example/android/settings.gradle.kts
new file mode 100644
index 00000000..a439442c
--- /dev/null
+++ b/flutter_cache_manager/example/android/settings.gradle.kts
@@ -0,0 +1,25 @@
+pluginManagement {
+    val flutterSdkPath = run {
+        val properties = java.util.Properties()
+        file("local.properties").inputStream().use { properties.load(it) }
+        val flutterSdkPath = properties.getProperty("flutter.sdk")
+        require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
+        flutterSdkPath
+    }
+
+    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+    repositories {
+        google()
+        mavenCentral()
+        gradlePluginPortal()
+    }
+}
+
+plugins {
+    id("dev.flutter.flutter-plugin-loader") version "1.0.0"
+    id("com.android.application") version "8.7.0" apply false
+    id("org.jetbrains.kotlin.android") version "1.8.22" apply false
+}
+
+include(":app")
diff --git a/flutter_cache_manager/example/ios/Flutter/Debug.xcconfig b/flutter_cache_manager/example/ios/Flutter/Debug.xcconfig
index ec97fc6f..592ceee8 100644
--- a/flutter_cache_manager/example/ios/Flutter/Debug.xcconfig
+++ b/flutter_cache_manager/example/ios/Flutter/Debug.xcconfig
@@ -1,2 +1 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
 #include "Generated.xcconfig"
diff --git a/flutter_cache_manager/example/ios/Flutter/Release.xcconfig b/flutter_cache_manager/example/ios/Flutter/Release.xcconfig
index c4855bfe..592ceee8 100644
--- a/flutter_cache_manager/example/ios/Flutter/Release.xcconfig
+++ b/flutter_cache_manager/example/ios/Flutter/Release.xcconfig
@@ -1,2 +1 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
 #include "Generated.xcconfig"
diff --git a/flutter_cache_manager/example/ios/Podfile b/flutter_cache_manager/example/ios/Podfile
deleted file mode 100644
index d97f17e2..00000000
--- a/flutter_cache_manager/example/ios/Podfile
+++ /dev/null
@@ -1,44 +0,0 @@
-# Uncomment this line to define a global platform for your project
-# platform :ios, '12.0'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
-  'Debug' => :debug,
-  'Profile' => :release,
-  'Release' => :release,
-}
-
-def flutter_root
-  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
-  unless File.exist?(generated_xcode_build_settings_path)
-    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
-  end
-
-  File.foreach(generated_xcode_build_settings_path) do |line|
-    matches = line.match(/FLUTTER_ROOT\=(.*)/)
-    return matches[1].strip if matches
-  end
-  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_ios_podfile_setup
-
-target 'Runner' do
-  use_frameworks!
-  use_modular_headers!
-
-  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
-  target 'RunnerTests' do
-    inherit! :search_paths
-  end
-end
-
-post_install do |installer|
-  installer.pods_project.targets.each do |target|
-    flutter_additional_ios_build_settings(target)
-  end
-end
diff --git a/flutter_cache_manager/example/ios/Runner.xcodeproj/project.pbxproj b/flutter_cache_manager/example/ios/Runner.xcodeproj/project.pbxproj
index 506236fe..ce3bc8fc 100644
--- a/flutter_cache_manager/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/flutter_cache_manager/example/ios/Runner.xcodeproj/project.pbxproj
@@ -362,7 +362,6 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 6UEL98K25V;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -542,7 +541,6 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 6UEL98K25V;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -565,7 +563,6 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 6UEL98K25V;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
diff --git a/flutter_cache_manager/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter_cache_manager/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 8e3ca5df..15cada48 100644
--- a/flutter_cache_manager/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/flutter_cache_manager/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -59,6 +59,7 @@
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
       debugServiceExtension = "internal"
+      enableGPUValidationMode = "1"
       allowLocationSimulation = "YES">
       <BuildableProductRunnable
          runnableDebuggingMode = "0">
diff --git a/flutter_cache_manager/example/ios/Runner/AppDelegate.swift b/flutter_cache_manager/example/ios/Runner/AppDelegate.swift
index 9074fee9..62666446 100644
--- a/flutter_cache_manager/example/ios/Runner/AppDelegate.swift
+++ b/flutter_cache_manager/example/ios/Runner/AppDelegate.swift
@@ -1,7 +1,7 @@
 import Flutter
 import UIKit
 
-@UIApplicationMain
+@main
 @objc class AppDelegate: FlutterAppDelegate {
   override func application(
     _ application: UIApplication,
diff --git a/flutter_cache_manager/example/linux/CMakeLists.txt b/flutter_cache_manager/example/linux/CMakeLists.txt
index be8ea20c..7a9a314f 100644
--- a/flutter_cache_manager/example/linux/CMakeLists.txt
+++ b/flutter_cache_manager/example/linux/CMakeLists.txt
@@ -1,5 +1,5 @@
 # Project-level configuration.
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.13)
 project(runner LANGUAGES CXX)
 
 # The name of the executable created for the application. Change this to change
@@ -7,7 +7,7 @@ project(runner LANGUAGES CXX)
 set(BINARY_NAME "example")
 # The unique GTK application identifier for this application. See:
 # https://wiki.gnome.org/HowDoI/ChooseApplicationID
-set(APPLICATION_ID "com.baseflow.example")
+set(APPLICATION_ID "com.example.example")
 
 # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
 # versions of CMake.
@@ -54,25 +54,8 @@ add_subdirectory(${FLUTTER_MANAGED_DIR})
 find_package(PkgConfig REQUIRED)
 pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
 
-add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
-
-# Define the application target. To change its name, change BINARY_NAME above,
-# not the value here, or `flutter run` will no longer work.
-#
-# Any new source files that you add to the application should be added here.
-add_executable(${BINARY_NAME}
-  "main.cc"
-  "my_application.cc"
-  "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
-)
-
-# Apply the standard set of build settings. This can be removed for applications
-# that need different build settings.
-apply_standard_settings(${BINARY_NAME})
-
-# Add dependency libraries. Add any application-specific dependencies here.
-target_link_libraries(${BINARY_NAME} PRIVATE flutter)
-target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
+# Application build; see runner/CMakeLists.txt.
+add_subdirectory("runner")
 
 # Run the Flutter tool portions of the build. This must not be removed.
 add_dependencies(${BINARY_NAME} flutter_assemble)
@@ -123,6 +106,12 @@ foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
     COMPONENT Runtime)
 endforeach(bundled_library)
 
+# Copy the native assets provided by the build.dart from all packages.
+set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
+install(DIRECTORY "${NATIVE_ASSETS_DIR}"
+   DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+   COMPONENT Runtime)
+
 # Fully re-copy the assets directory on each build to avoid having stale files
 # from a previous install.
 set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
diff --git a/flutter_cache_manager/example/linux/runner/CMakeLists.txt b/flutter_cache_manager/example/linux/runner/CMakeLists.txt
new file mode 100644
index 00000000..e97dabc7
--- /dev/null
+++ b/flutter_cache_manager/example/linux/runner/CMakeLists.txt
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 3.13)
+project(runner LANGUAGES CXX)
+
+# Define the application target. To change its name, change BINARY_NAME in the
+# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
+# work.
+#
+# Any new source files that you add to the application should be added here.
+add_executable(${BINARY_NAME}
+  "main.cc"
+  "my_application.cc"
+  "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
+)
+
+# Apply the standard set of build settings. This can be removed for applications
+# that need different build settings.
+apply_standard_settings(${BINARY_NAME})
+
+# Add preprocessor definitions for the application ID.
+add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
+
+# Add dependency libraries. Add any application-specific dependencies here.
+target_link_libraries(${BINARY_NAME} PRIVATE flutter)
+target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
+
+target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
diff --git a/flutter_cache_manager/example/linux/main.cc b/flutter_cache_manager/example/linux/runner/main.cc
similarity index 100%
rename from flutter_cache_manager/example/linux/main.cc
rename to flutter_cache_manager/example/linux/runner/main.cc
diff --git a/flutter_cache_manager/example/linux/my_application.cc b/flutter_cache_manager/example/linux/runner/my_application.cc
similarity index 78%
rename from flutter_cache_manager/example/linux/my_application.cc
rename to flutter_cache_manager/example/linux/runner/my_application.cc
index 0ba8f430..6c810823 100644
--- a/flutter_cache_manager/example/linux/my_application.cc
+++ b/flutter_cache_manager/example/linux/runner/my_application.cc
@@ -81,6 +81,24 @@ static gboolean my_application_local_command_line(GApplication* application, gch
   return TRUE;
 }
 
+// Implements GApplication::startup.
+static void my_application_startup(GApplication* application) {
+  //MyApplication* self = MY_APPLICATION(object);
+
+  // Perform any actions required at application startup.
+
+  G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
+}
+
+// Implements GApplication::shutdown.
+static void my_application_shutdown(GApplication* application) {
+  //MyApplication* self = MY_APPLICATION(object);
+
+  // Perform any actions required at application shutdown.
+
+  G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
+}
+
 // Implements GObject::dispose.
 static void my_application_dispose(GObject* object) {
   MyApplication* self = MY_APPLICATION(object);
@@ -91,12 +109,20 @@ static void my_application_dispose(GObject* object) {
 static void my_application_class_init(MyApplicationClass* klass) {
   G_APPLICATION_CLASS(klass)->activate = my_application_activate;
   G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
+  G_APPLICATION_CLASS(klass)->startup = my_application_startup;
+  G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
   G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
 }
 
 static void my_application_init(MyApplication* self) {}
 
 MyApplication* my_application_new() {
+  // Set the program name to the application ID, which helps various systems
+  // like GTK and desktop environments map this running application to its
+  // corresponding .desktop file. This ensures better integration by allowing
+  // the application to be recognized beyond its binary name.
+  g_set_prgname(APPLICATION_ID);
+
   return MY_APPLICATION(g_object_new(my_application_get_type(),
                                      "application-id", APPLICATION_ID,
                                      "flags", G_APPLICATION_NON_UNIQUE,
diff --git a/flutter_cache_manager/example/linux/my_application.h b/flutter_cache_manager/example/linux/runner/my_application.h
similarity index 100%
rename from flutter_cache_manager/example/linux/my_application.h
rename to flutter_cache_manager/example/linux/runner/my_application.h
diff --git a/flutter_cache_manager/example/macos/Flutter/Flutter-Debug.xcconfig b/flutter_cache_manager/example/macos/Flutter/Flutter-Debug.xcconfig
index 4b81f9b2..c2efd0b6 100644
--- a/flutter_cache_manager/example/macos/Flutter/Flutter-Debug.xcconfig
+++ b/flutter_cache_manager/example/macos/Flutter/Flutter-Debug.xcconfig
@@ -1,2 +1 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
 #include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/flutter_cache_manager/example/macos/Flutter/Flutter-Release.xcconfig b/flutter_cache_manager/example/macos/Flutter/Flutter-Release.xcconfig
index 5caa9d15..c2efd0b6 100644
--- a/flutter_cache_manager/example/macos/Flutter/Flutter-Release.xcconfig
+++ b/flutter_cache_manager/example/macos/Flutter/Flutter-Release.xcconfig
@@ -1,2 +1 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
 #include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/flutter_cache_manager/example/macos/Flutter/GeneratedPluginRegistrant.swift b/flutter_cache_manager/example/macos/Flutter/GeneratedPluginRegistrant.swift
index d24127f3..645e27da 100644
--- a/flutter_cache_manager/example/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/flutter_cache_manager/example/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -5,12 +5,10 @@
 import FlutterMacOS
 import Foundation
 
-import path_provider_foundation
-import sqflite
+import sqflite_darwin
 import url_launcher_macos
 
 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
-  PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
   SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
   UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
 }
diff --git a/flutter_cache_manager/example/macos/Podfile b/flutter_cache_manager/example/macos/Podfile
deleted file mode 100644
index c795730d..00000000
--- a/flutter_cache_manager/example/macos/Podfile
+++ /dev/null
@@ -1,43 +0,0 @@
-platform :osx, '10.14'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
-  'Debug' => :debug,
-  'Profile' => :release,
-  'Release' => :release,
-}
-
-def flutter_root
-  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
-  unless File.exist?(generated_xcode_build_settings_path)
-    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
-  end
-
-  File.foreach(generated_xcode_build_settings_path) do |line|
-    matches = line.match(/FLUTTER_ROOT\=(.*)/)
-    return matches[1].strip if matches
-  end
-  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_macos_podfile_setup
-
-target 'Runner' do
-  use_frameworks!
-  use_modular_headers!
-
-  flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
-  target 'RunnerTests' do
-    inherit! :search_paths
-  end
-end
-
-post_install do |installer|
-  installer.pods_project.targets.each do |target|
-    flutter_additional_macos_build_settings(target)
-  end
-end
diff --git a/flutter_cache_manager/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter_cache_manager/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 15368ecc..ac78810c 100644
--- a/flutter_cache_manager/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/flutter_cache_manager/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -59,6 +59,7 @@
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
       debugServiceExtension = "internal"
+      enableGPUValidationMode = "1"
       allowLocationSimulation = "YES">
       <BuildableProductRunnable
          runnableDebuggingMode = "0">
diff --git a/flutter_cache_manager/example/macos/Runner/AppDelegate.swift b/flutter_cache_manager/example/macos/Runner/AppDelegate.swift
index d53ef643..b3c17614 100644
--- a/flutter_cache_manager/example/macos/Runner/AppDelegate.swift
+++ b/flutter_cache_manager/example/macos/Runner/AppDelegate.swift
@@ -1,9 +1,13 @@
 import Cocoa
 import FlutterMacOS
 
-@NSApplicationMain
+@main
 class AppDelegate: FlutterAppDelegate {
   override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
     return true
   }
+
+  override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
+    return true
+  }
 }
diff --git a/flutter_cache_manager/example/macos/Runner/Configs/AppInfo.xcconfig b/flutter_cache_manager/example/macos/Runner/Configs/AppInfo.xcconfig
index 92fb3cd5..dda9752f 100644
--- a/flutter_cache_manager/example/macos/Runner/Configs/AppInfo.xcconfig
+++ b/flutter_cache_manager/example/macos/Runner/Configs/AppInfo.xcconfig
@@ -11,4 +11,4 @@ PRODUCT_NAME = example
 PRODUCT_BUNDLE_IDENTIFIER = com.example.example
 
 // The copyright displayed in application information
-PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved.
+PRODUCT_COPYRIGHT = Copyright © 2025 com.example. All rights reserved.
diff --git a/flutter_cache_manager/example/pubspec.yaml b/flutter_cache_manager/example/pubspec.yaml
index 5f5bcc98..952ff47d 100644
--- a/flutter_cache_manager/example/pubspec.yaml
+++ b/flutter_cache_manager/example/pubspec.yaml
@@ -1,23 +1,29 @@
 name: example
-description: A project that showcases usage of flutter_cache_manager
-publish_to: none
+description: "A project that showcases usage of flutter_cache_manager"
+
+publish_to: 'none'
+
 version: 1.0.0+1
+
 environment:
-  sdk: '>=3.0.0 <4.0.0'
+  sdk: ^3.7.0
 
 dependencies:
   baseflow_plugin_template: ^2.2.0
+
   cupertino_icons: ^1.0.8
   flutter:
     sdk: flutter
   flutter_cache_manager:
     path: ../
-  url_launcher: ^6.3.0
+  url_launcher: ^6.3.1
 
 dev_dependencies:
+
+  flutter_lints: ^5.0.0
   flutter_test:
     sdk: flutter
-  flutter_lints: ^4.0.0
 
 flutter:
+
   uses-material-design: true
diff --git a/flutter_cache_manager/example/test/widget_test.dart b/flutter_cache_manager/example/test/widget_test.dart
index 570e0e47..d289e060 100644
--- a/flutter_cache_manager/example/test/widget_test.dart
+++ b/flutter_cache_manager/example/test/widget_test.dart
@@ -1,8 +1,29 @@
 // This is a basic Flutter widget test.
 //
 // To perform an interaction with a widget in your test, use the WidgetTester
-// utility that Flutter provides. For example, you can send tap and scroll
+// utility in the flutter_test package. For example, you can send tap and scroll
 // gestures. You can also use WidgetTester to find child widgets in the widget
 // tree, read text, and verify that the values of widget properties are correct.
 
-void main() {}
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+
+void main() {
+  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+    // Build our app and trigger a frame.
+    // await tester.pumpWidget(const MyApp());
+
+    // Verify that our counter starts at 0.
+    expect(find.text('0'), findsOneWidget);
+    expect(find.text('1'), findsNothing);
+
+    // Tap the '+' icon and trigger a frame.
+    await tester.tap(find.byIcon(Icons.add));
+    await tester.pump();
+
+    // Verify that our counter has incremented.
+    expect(find.text('0'), findsNothing);
+    expect(find.text('1'), findsOneWidget);
+  });
+}
diff --git a/flutter_cache_manager/example/web/index.html b/flutter_cache_manager/example/web/index.html
index 1aa025dd..29b58086 100644
--- a/flutter_cache_manager/example/web/index.html
+++ b/flutter_cache_manager/example/web/index.html
@@ -21,7 +21,7 @@
   <meta name="description" content="A new Flutter project.">
 
   <!-- iOS meta tags & icons -->
-  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="mobile-web-app-capable" content="yes">
   <meta name="apple-mobile-web-app-status-bar-style" content="black">
   <meta name="apple-mobile-web-app-title" content="example">
   <link rel="apple-touch-icon" href="icons/Icon-192.png">
diff --git a/flutter_cache_manager/example/windows/runner/Runner.rc b/flutter_cache_manager/example/windows/runner/Runner.rc
index 687e6bd2..289fc7ee 100644
--- a/flutter_cache_manager/example/windows/runner/Runner.rc
+++ b/flutter_cache_manager/example/windows/runner/Runner.rc
@@ -93,7 +93,7 @@ BEGIN
             VALUE "FileDescription", "example" "\0"
             VALUE "FileVersion", VERSION_AS_STRING "\0"
             VALUE "InternalName", "example" "\0"
-            VALUE "LegalCopyright", "Copyright (C) 2024 com.example. All rights reserved." "\0"
+            VALUE "LegalCopyright", "Copyright (C) 2025 com.example. All rights reserved." "\0"
             VALUE "OriginalFilename", "example.exe" "\0"
             VALUE "ProductName", "example" "\0"
             VALUE "ProductVersion", VERSION_AS_STRING "\0"
diff --git a/flutter_cache_manager/example/windows/runner/runner.exe.manifest b/flutter_cache_manager/example/windows/runner/runner.exe.manifest
index a42ea768..153653e8 100644
--- a/flutter_cache_manager/example/windows/runner/runner.exe.manifest
+++ b/flutter_cache_manager/example/windows/runner/runner.exe.manifest
@@ -9,12 +9,6 @@
     <application>
       <!-- Windows 10 and Windows 11 -->
       <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
-      <!-- Windows 8.1 -->
-      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
-      <!-- Windows 8 -->
-      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
-      <!-- Windows 7 -->
-      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/flutter_cache_manager/lib/src/cache_store.dart b/flutter_cache_manager/lib/src/cache_store.dart
index bf283086..ca6e9188 100644
--- a/flutter_cache_manager/lib/src/cache_store.dart
+++ b/flutter_cache_manager/lib/src/cache_store.dart
@@ -2,7 +2,6 @@ import 'dart:async';
 import 'dart:io';
 
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'dart:io' as io;
 
 ///Flutter Cache Manager
 ///Copyright (c) 2019 Rene Floor
@@ -184,7 +183,7 @@ class CacheStore {
     if (_futureCache.containsKey(cacheObject.key)) {
       await _futureCache.remove(cacheObject.key);
     }
-    final file = io.File(cacheObject.relativePath);
+    final file = await fileSystem.createFile(cacheObject.relativePath);
 
     if (file.existsSync()) {
       try {
diff --git a/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_info_repository.dart b/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_info_repository.dart
index 5a282b24..482b3877 100644
--- a/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_info_repository.dart
+++ b/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_info_repository.dart
@@ -1,4 +1,5 @@
 import 'dart:async';
+import 'dart:io';
 
 import 'package:flutter_cache_manager/src/logger.dart';
 import 'package:flutter_cache_manager/src/storage/cache_object.dart';
@@ -49,6 +50,9 @@ abstract class CacheInfoRepository {
 
   /// Deletes the cache data file including all cache data.
   Future<void> deleteDataFile();
+
+  /// The cached directory
+  Future<Directory> getDirectory();
 }
 
 extension MigrationExtension on CacheInfoRepository {
diff --git a/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_object_provider.dart b/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_object_provider.dart
index 16bf5656..621ea3cf 100644
--- a/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_object_provider.dart
+++ b/flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_object_provider.dart
@@ -4,7 +4,7 @@ import 'package:flutter_cache_manager/src/storage/cache_info_repositories/cache_
 import 'package:flutter_cache_manager/src/storage/cache_info_repositories/helper_methods.dart';
 import 'package:flutter_cache_manager/src/storage/cache_object.dart';
 import 'package:path/path.dart';
-import 'package:path_provider/path_provider.dart';
+// import 'package:path_provider/path_provider.dart';
 import 'package:sqflite/sqflite.dart';
 
 const _tableCacheObject = 'cacheObject';
@@ -193,7 +193,7 @@ class CacheObjectProvider extends CacheInfoRepository
     if (_path != null) {
       directory = File(_path!).parent;
     } else {
-      directory = await getApplicationSupportDirectory();
+      directory = await getDirectory();
     }
     await directory.create(recursive: true);
     if (_path == null || !_path!.endsWith('.db')) {
@@ -203,6 +203,12 @@ class CacheObjectProvider extends CacheInfoRepository
     return _path!;
   }
 
+  @override
+  Future<Directory> getDirectory() async {
+    final path = await getDatabasesPath();
+    return Directory(path);
+  }
+
   // Migration for pre-V2 path on iOS and macOS
   Future<void> _migrateOldDbPath(String newDbPath) async {
     final oldDbPath = join(await getDatabasesPath(), '$databaseName.db');
diff --git a/flutter_cache_manager/lib/src/storage/cache_info_repositories/json_cache_info_repository.dart b/flutter_cache_manager/lib/src/storage/cache_info_repositories/json_cache_info_repository.dart
index 800f4ba1..faeca1fe 100644
--- a/flutter_cache_manager/lib/src/storage/cache_info_repositories/json_cache_info_repository.dart
+++ b/flutter_cache_manager/lib/src/storage/cache_info_repositories/json_cache_info_repository.dart
@@ -9,7 +9,7 @@ import 'package:flutter_cache_manager/src/storage/cache_info_repositories/cache_
 import 'package:flutter_cache_manager/src/storage/cache_info_repositories/helper_methods.dart';
 import 'package:flutter_cache_manager/src/storage/cache_object.dart';
 import 'package:path/path.dart';
-import 'package:path_provider/path_provider.dart';
+import 'package:sqflite/sqflite.dart';
 
 class JsonCacheInfoRepository extends CacheInfoRepository
     with CacheInfoRepositoryHelperMethods {
@@ -210,7 +210,7 @@ class JsonCacheInfoRepository extends CacheInfoRepository
       if (path != null) {
         directory = File(path!).parent;
       } else {
-        directory ??= await getApplicationSupportDirectory();
+        directory ??= await getDirectory();
       }
       await directory!.create(recursive: true);
       if (path == null || !path!.endsWith('.json')) {
@@ -220,4 +220,10 @@ class JsonCacheInfoRepository extends CacheInfoRepository
     }
     return _file!;
   }
+  
+  @override
+  Future<Directory> getDirectory() async{
+    final path = await getDatabasesPath();
+    return Directory(path);
+  }
 }
diff --git a/flutter_cache_manager/lib/src/storage/cache_info_repositories/non_storing_object_provider.dart b/flutter_cache_manager/lib/src/storage/cache_info_repositories/non_storing_object_provider.dart
index 92ea41c2..fe81e5af 100644
--- a/flutter_cache_manager/lib/src/storage/cache_info_repositories/non_storing_object_provider.dart
+++ b/flutter_cache_manager/lib/src/storage/cache_info_repositories/non_storing_object_provider.dart
@@ -1,5 +1,8 @@
+import 'dart:io';
+
 import 'package:flutter_cache_manager/src/storage/cache_info_repositories/cache_info_repository.dart';
 import 'package:flutter_cache_manager/src/storage/cache_object.dart';
+import 'package:sqflite/sqflite.dart';
 
 class NonStoringObjectProvider implements CacheInfoRepository {
   @override
@@ -72,4 +75,10 @@ class NonStoringObjectProvider implements CacheInfoRepository {
   Future<bool> exists() async {
     return false;
   }
+
+  @override
+  Future<Directory> getDirectory() async{
+    final path = await getDatabasesPath();
+    return Directory(path);
+  }
 }
diff --git a/flutter_cache_manager/lib/src/storage/file_system/file_system_io.dart b/flutter_cache_manager/lib/src/storage/file_system/file_system_io.dart
index 15ab3901..6d086edb 100644
--- a/flutter_cache_manager/lib/src/storage/file_system/file_system_io.dart
+++ b/flutter_cache_manager/lib/src/storage/file_system/file_system_io.dart
@@ -1,8 +1,10 @@
+import 'dart:io' as io;
+
 import 'package:file/file.dart' hide FileSystem;
 import 'package:file/local.dart';
 import 'package:flutter_cache_manager/src/storage/file_system/file_system.dart';
 import 'package:path/path.dart' as p;
-import 'package:path_provider/path_provider.dart';
+import 'package:sqflite/sqflite.dart';
 
 class IOFileSystem implements FileSystem {
   final Future<Directory> _fileDir;
@@ -11,7 +13,7 @@ class IOFileSystem implements FileSystem {
   IOFileSystem(this._cacheKey) : _fileDir = createDirectory(_cacheKey);
 
   static Future<Directory> createDirectory(String key) async {
-    final baseDir = await getTemporaryDirectory();
+    final baseDir = await getDirectory();
     final path = p.join(baseDir.path, key);
 
     const fs = LocalFileSystem();
@@ -28,4 +30,9 @@ class IOFileSystem implements FileSystem {
     }
     return directory.childFile(name);
   }
+
+  static Future<io.Directory> getDirectory() async{
+    final path = await getDatabasesPath();
+    return io.Directory(path);
+  }
 }
diff --git a/flutter_cache_manager/pubspec.yaml b/flutter_cache_manager/pubspec.yaml
index 4e49f688..b4f7cbba 100644
--- a/flutter_cache_manager/pubspec.yaml
+++ b/flutter_cache_manager/pubspec.yaml
@@ -16,7 +16,6 @@ dependencies:
     sdk: flutter
   http: ^1.2.2
   path: ^1.9.0
-  path_provider: ^2.1.4
   rxdart: '>=0.27.7 <0.29.0'
   sqflite: ^2.3.3+1
   uuid: ^4.4.2
diff --git a/flutter_cache_manager/test/cache_store_test.dart b/flutter_cache_manager/test/cache_store_test.dart
index b9a7ccd4..ddc693a9 100644
--- a/flutter_cache_manager/test/cache_store_test.dart
+++ b/flutter_cache_manager/test/cache_store_test.dart
@@ -402,6 +402,24 @@ void main() {
       verify(config.mockRepo
           .deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1);
     });
+
+    test('Store should delete file when remove cached file', () async {
+      var config = createTestConfig();
+      var store = CacheStore(config);
+
+      await config.returnsFile(fileName);
+      config.returnsCacheObject(fileUrl, fileName, validTill, id: 1);
+
+      var cacheObject = await store.retrieveCacheData(fileUrl);
+
+      expect(cacheObject, isNotNull);
+      var fileInfo = await store.getFile(cacheObject!.key);
+      expect(await fileInfo?.file.exists(), isTrue);
+
+      await store.removeCachedFile(cacheObject);
+
+      expect(await fileInfo?.file.exists(), isFalse);
+    });
   });
 }
 
diff --git a/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart b/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart
index e45ed319..72b59e25 100644
--- a/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart
+++ b/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart
@@ -9,15 +9,15 @@ class FirebaseCacheManager extends CacheManager {
   static const key = 'firebaseCache';
 
   static final FirebaseCacheManager _instance =
-      FirebaseCacheManager._(retryOptions: retryOptions, bucket: bucket);
+      FirebaseCacheManager._(retryOptions: _retryOptions, bucket: _bucket);
 
-  static RetryOptions? retryOptions;
+  static RetryOptions? _retryOptions;
 
-  static String? bucket;
+  static String? _bucket;
 
   factory FirebaseCacheManager({RetryOptions? retryOptions, String? bucket}) {
-    bucket = bucket;
-    retryOptions = retryOptions;
+    _bucket = bucket;
+    _retryOptions = retryOptions;
     return _instance;
   }
 
diff --git a/flutter_cache_manager_firebase/pubspec.yaml b/flutter_cache_manager_firebase/pubspec.yaml
index b92533e7..ca104438 100644
--- a/flutter_cache_manager_firebase/pubspec.yaml
+++ b/flutter_cache_manager_firebase/pubspec.yaml
@@ -9,7 +9,7 @@ environment:
 dependencies:
   flutter:
     sdk: flutter
-  flutter_cache_manager: ^3.4.0
+  flutter_cache_manager: ^3.4.1
   firebase_storage: '>=12.0.0 <13.0.0'
   path_provider: ^2.1.4
   path: ^1.9.0