NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2393 most downloaded on pub.dev
A Flutter plugin for retrieving the path to the downloads folder and performing operations related to file downloads on different platforms.
Last release 4 months ago
22 May 2026
Release timing varies
gaps range from 8 days to 13 months
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
10 releases · first in 2023
The native MediaStore helper now resolves the on-disk path by querying DISPLAY_NAME + RELATIVE_PATH (the deprecated DATA column returned null on R+),…
copyFileIntoDownloadFolder now returns Future<SavedDownload?> instead of Future<File?>. SavedDownload exposes both file (the on-disk path) and contentUri (the Android MediaStore content:// URI on Android 10+, null elsewhere). Use contentUri for any read / share / intent work on Android 10+ — scoped storage prevents raw dart:io access to file.path from the calling app even though the file exists. Migration: replace saved.path with saved.file.path.^3.12.0). Required for the Android Built-in Kotlin migration.kotlin-android). Consumer apps that have not yet migrated to Built-in Kotlin should follow https://docs.flutter.dev/release/breaking-changes/migrate-to-built-in-kotlin/for-app-developers.ios/downloadsfolder/Package.swift. The CocoaPods podspec is preserved for apps that have not yet adopted SPM.macos/downloadsfolder/Package.swift. The CocoaPods podspec is preserved for apps that have not yet adopted SPM.openAfterSave parameter on copyFileIntoDownloadFolder. When true, the saved file is immediately opened in the OS default viewer (ACTION_VIEW on Android, open / xdg-open / cmd /c start on the desktop platforms).openDownloadFolder no longer hangs. The Swift handler now invokes the Flutter result callback via UIApplication.shared.open(_:options:completionHandler:) so the Dart future resolves to true/false correctly.copyFileIntoDownloadFolder no longer throws on Android 10+. The native MediaStore helper now resolves the on-disk path by querying DISPLAY_NAME + RELATIVE_PATH (the deprecated DATA column returned null on R+), includes the file extension in the saved file's display name, and sanitizes the subDirectoryPath. The Dart side no longer force-unwraps the platform-channel result.copyFileIntoDownloadFolder now correctly creates nested subDirectoryPath directories on the non-MediaStore path (Android < 29, iOS, desktop). FileTool.copyTo previously called Directory.create() non-recursively and threw PathNotFoundException when the immediate parent did not exist.subDirectoryPath / openAfterSave knobs can be exercised from the UI.dartx dependency.getPlatformVersion Kotlin/Windows/example tests with assertions that match the current plugin surface, and added Dart unit tests covering SavedDownload, FileTool.copyTo (collision suffixing, sanitization, diacritic stripping, extension handling), and the method-channel layer (channel name, off-Android short-circuit, native call shape, and the non-Android copy branch with a mocked path_provider).dart format --set-exit-if-changed, flutter analyze, and flutter test for both the plugin and the example, plus an Android APK build with Kotlin Gradle unit tests, an iOS simulator build, and a macOS build.12.0.One column per month.
copyFileIntoDownloadFolder Return Type
Removed the dependency on permission_handler .
Full Changelog: 1.1.1...1.2.0
permission_handler.Updated dependencies to the latest versions.
Full Changelog: 1.1.0...1.1.1
Refactor: Simplify Dependencies and Improve Code Organization by @UnluckyY1 in #5
Full Changelog: 1.0.1...1.1.0
remove the usage of url_launcher plugin
Updates documentation on README.md.
Full Changelog: https://github.com/UnluckyY1/flutter_downloads_folder/commits/1.0.1
BREAKING Change getDownloadFolderPath to getDownloadFolder and have it return a Directory instead of a String?
- update dependencies - update example app
Released the initial version of the downloadsfolder plugin.
downloadsfolder plugin.Your coding agent can read these notes before it upgrades. Set up the MCP server →