x_storage_core 0.2.1
x_storage_core: ^0.2.1 copied to clipboard
Core package for x_storage providing XStorageProvider and other base functionality
x_storage_core #
XStorage is a Flutter package that provides a unified interface for handling different storage services (Firebase Storage, local file system, etc.). This package provides the core functionality of XStorage.
Features #
- Unified storage interface (
XStorageProvider) - Base implementations for various storage providers
- Basic file operations (read, write, delete, existence check)
- URI-based file management
Getting Started #
Installation #
dependencies:
x_storage_core: ^0.0.1
Basic Usage #
import 'package:x_storage_core/x_storage_core.dart';
// Create XStorage instance
final storage = XStorage();
// Register a provider (example: custom provider)
class MyStorageProvider extends XStorageProvider with NetworkProviderMixin {
@override
String get scheme => 'my_storage';
@override
String get rootUrl => 'https://example.com';
// Implement other methods...
}
// Register the provider
storage.registerProvider(MyStorageProvider());
// Save a file
await storage.saveFile(
XUri.create('my_storage', 'path/to/file.txt'),
Uint8List.fromList([/* data */]),
);
// Load a file
final data = await storage.loadFile(
XUri.create('my_storage', 'path/to/file.txt'),
);
// Delete a file
await storage.deleteFile(
XUri.create('my_storage', 'path/to/file.txt'),
);
Creating Custom Providers #
To create a provider for a new storage service, extend XStorageProvider and implement the required methods:
class CustomStorageProvider extends XStorageProvider with NetworkProviderMixin {
@override
String get scheme => 'custom';
@override
String get rootUrl => 'https://custom-storage.example.com';
@override
Future<void> saveFile(XUri uri, Uint8List data) async {
// Implementation...
}
@override
Future<Uint8List?> loadFile(XUri uri) async {
// Implementation...
}
@override
Future<void> deleteFile(XUri uri) async {
// Implementation...
}
}
Available Mixins #
NetworkProviderMixin: For network-based storageFileProviderMixin: For file system-based storageAssetProviderMixin: For Flutter assets
License #
This project is licensed under the MIT License - see the LICENSE file for details.