Flutter Storage Info
A Flutter plugin to retrieve information about device storage.
This plugin provides methods to get information about both internal and external storage space on an Android device.
Usage
To use this plugin, add flutter_storage_info
as a dependency in your pubspec.yaml file.
dependencies:
flutter_storage_info: ^0.0.5
import 'package:flutter_storage_info/flutter_storage_info.dart';
Example
import 'package:flutter_storage_info/flutter_storage_info.dart';
void main() async {
// Fetch the storage info
final flutterStorageInfo = FlutterStorageInfo();
double totalSpace = await flutterStorageInfo.getTotalDiskSpace;
double freeSpace = await flutterStorageInfo.getFreeDiskSpace;
double usedSpace = await flutterStorageInfo.getUsedDiskSpace;
print('Total Space: $totalSpace');
print('Free Space: $freeSpace');
print('Used Space: $usedSpace');
}
Methods
- You can access all the methods using the
flutterStorageInfo
object as shown below:
final flutterStorageInfo = FlutterStorageInfo();
Internal Storage (Device Storage)
getFreeDiskSpace
: Returns the amount of free space available on the device's internal storage.getTotalDiskSpace
: Returns the total amount of space available on the device's internal storage.getUsedDiskSpace
: Returns the amount of used space on the device's internal storage.getFreeDiskSpaceInGB
: Returns the amount of free space available on the device's internal storage in gigabytes.getTotalDiskSpaceInGB
: Returns the total amount of space available on the device's internal storage in gigabytes.getUsedDiskSpaceInGB
: Returns the amount of used space on the device's internal storage in gigabytes.getFreeDiskSpaceInMB
: Returns the amount of free space available on the device's internal storage in megabytes.getTotalDiskSpaceInMB
: Returns the total amount of space available on the device's internal storage in megabytes.getUsedDiskSpaceInMB
: Returns the amount of used space on the device's internal storage in megabytes.
External Storage (SD Card)
getFreeExternalDiskSpace
: Returns the amount of free space available on the device's external storage.getTotalExternalDiskSpace
: Returns the total amount of space available on the device's external storage.getUsedExternalDiskSpace
: Returns the amount of used space on the device's external storage.getFreeExternalDiskSpaceInGB
: Returns the amount of free space available on the device's external storage in gigabytes.getTotalExternalDiskSpaceInGB
: Returns the total amount of space available on the device's external storage in gigabytes.getUsedExternalDiskSpaceInGB
: Returns the amount of used space on the device's external storage in gigabytes.getFreeExternalDiskSpaceInMB
: Returns the amount of free space available on the device's external storage in megabytes.getTotalExternalDiskSpaceInMB
: Returns the total amount of space available on the device's external storage in megabytes.getUsedExternalDiskSpaceInMB
: Returns the amount of used space on the device's external storage in megabytes.
Get the size of a given directory in MB (megabytes)
String directoryPath = '/storage/emulated/0/Movies/MyFolder/';
double directorySize = await FlutterStorageInfo.getSizeOfDirectoryInMB(directoryPath);
>> 12.98790
Get storage type from path (internal or external)
String path = '/storage/emulated/0/Android';
DeviceStorageType storageType = FlutterStorageInfo.getStorageTypeFromPath(path);
>> DeviceStorageType.internal
Get storage usage value from total and used space
Get a value from 0.0 to 1.0 indicating the storage usage given the total and used space.
double storageTotal = await FlutterStorageInfo.getExternalStorageTotalSpaceInGB;
double storageUsed = await FlutterStorageInfo.getExternalStorageUsedSpaceInGB;
double storageUsageValue = FlutterStorageInfo.getStorageUsageValue(storageUsed, storageTotal);
>> 0.95
Get whether - given the storage type - the storage is below the threshold
This method calls the above methods internally and returns a boolean value indicating whether the storage is below the threshold.
DeviceStorageType storageType = DeviceStorageType.internal;
// Optionally set the threshold. The default is 0.98 (98%)
double threshold = 0.96;
bool isBelowThreshold = FlutterStorageInfo.getIsStorageTypeBelowThreshold(storageType, threshold);
>> true
Get whether the storage is low on storage using the storage usage value and threshold
double storageTotal = await FlutterStorageInfo.getExternalStorageTotalSpaceInGB;
double storageUsed = await FlutterStorageInfo.getExternalStorageUsedSpaceInGB;
double threshold = 0.96;
double storageUsageValue = FlutterStorageInfo.getStorageUsageValue(storageUsed, storageTotal);
bool isBelowThreshold = FlutterStorageInfo.getIsStorageBelowThreshold(storageUsageValue, threshold);
>> true
Screenshot
Permissions
Android
Add the following permissions to your AndroidManifest.xml file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
Supported Platforms
- Android (✅)
- iOS (🕑)
- Linux (❌)
- macOS (❌)
- Windows (❌)
Issues and feedback
Please file issues to send feedback or report a bug. Thank you!