image_uploader 0.0.2
image_uploader: ^0.0.2 copied to clipboard
A modular and extensible Dart package for uploading and deleting images using Firebase Storage or REST APIs. Built with clean architecture principles and easy-to-integrate dependency injection support.
image_uploader #
image_uploader is a modular and extensible Dart package that simplifies file upload and deletion processes using either Firebase Storage or a REST API-based service. Built with dependency injection and clean architecture principles, this package is designed to integrate easily into your Flutter backend logic.
Features #
- Upload files to Firebase Storage or a REST API.
- Delete files from Firebase Storage or REST API.
- Encapsulated
FileEntityandFileResponseEntitymodels. - Extension on
Uint8Listto upload image bytes to Firebase Storage. - Clean separation of concerns via repositories and services.
- Plug-and-play registration using
get_it.
Getting Started #
Installation #
Add the following to your pubspec.yaml:
dependencies:
image_uploader: <latest_version>
Usage #
Dependency Injection Setup #
Choose your data source:
Firebase Storage
fileRegisterGetItDIFireStorageDataSource();
REST API
fileRegisterGetItDiRestApiDataSource();
Use Cases #
final uploadFile = sl<UploadFile>();
final deleteFile = sl<DeleteFile>();
final fileEntity = FileEntity(
file: file,
fileName: 'example.jpg',
fileType: 'image',
path: 'user_uploads',
);
final result = await uploadFile(fileEntity);
Upload Uint8List directly to Firebase #
final Uint8List imageBytes = ...
final url = await imageBytes.uploadToFirebaseStorage(
fileName: 'image.jpg',
collectionPath: 'uploads',
);
Models #
FileEntity #
class FileEntity {
final File file;
final String? path;
final String? fileName;
final String? fileType;
final String? uploadingToastTxt;
}
FileResponseEntity #
class FileResponseEntity {
final String? fileName;
final String? imgUrl;
}
Interfaces #
IFileRepository #
abstract class IFileRepository {
Future<Either<IFailure, String>> uploadFile(FileEntity fileEntity);
Future<Either<IFailure, bool>> deleteFile(String imgUrl);
}
Customization #
Implement your own IFileRepository, IFireStorageService, or IImageServiceRestApiDataSource to customize how uploading/deleting is handled.
Requirements #
- Firebase setup (if using Firebase Storage)
get_itfor dependency injection
License #
MIT License. See LICENSE file for details.
Maintainers #
Maintained by Shohidul Islam. Contributions welcome!