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. - 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>
Then run:
flutter pub get
Usage
Dependency Injection Setup
Choose your data source by passing ImageUploaderSource enum to the fileRegisterGetItDi() function:
Firebase Storage
fileRegisterGetItDi(ImageUploaderSource.firebase);
REST API
fileRegisterGetItDi(ImageUploaderSource.restApi);
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);
Models
FileEntity
class FileEntity {
final File? file;
final Uint8List? bytes;
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)
dartz,exception_type,i_tddfor result handling and abstractions
License
MIT License. See LICENSE file for details.
Maintainers
Developed and Maintained with ❤️ by Shohidul Islam. Contributions welcome!
Libraries
- config/dependency_injection/file_register_get_it_di_fire_storage_data_source
- config/dependency_injection/file_register_get_it_di_rest_api_data_source
- config/dependency_injection/file_use_case_register_get_it_di
- config/dependency_injection/register_image_uploader_get_it_di
- domain/entities/file_entity
- domain/entities/file_response_entity
- domain/repositories/file_repository_fire_storage_data_source_impl
- domain/repositories/file_repository_rest_api_data_source_impl
- domain/repositories/i_repositories/i_file_repository
- domain/usecases/delete_file
- domain/usecases/i_usecases/i_delete_file
- domain/usecases/i_usecases/i_upload_file
- domain/usecases/upload_file
- enums/data_source_type
- image_uploader