reusable_editor 0.0.6+2
reusable_editor: ^0.0.6+2 copied to clipboard
A modular file editor package for Flutter with support for Firebase and REST API storage, including upload/delete functionality, state management cubits, and UI helpers.
reusable_editor #
A flexible and modular file management package for Flutter, supporting both Firestore and REST API-based storage systems. This package includes file upload/delete operations, state management using Cubits, and various utilities for file/image handling and selection.
Features #
- Abstract interfaces for clean architecture
- File upload and delete operations
- Support for Firebase Firestore and custom REST API
- Cubits for managing form states (e.g. image, switch, dropdown, text field)
- Extensions for asset loading as
FileandUint8List - Enum-based dropdown with icon and label support
Getting Started #
Installation #
Add the following to your pubspec.yaml:
dependencies:
reusable_editor: <latest_version>
Import #
import 'package:reusable_editor/reusable_editor.dart';
Usage #
File Upload and Delete #
final repository = FileRepositoryFireStorageDataSourceImpl(
iFireStorageService: YourFireStorageService(),
);
final uploadUseCase = UploadFile(repository);
final deleteUseCase = DeleteFile(repository);
final result = await uploadUseCase.call(fileEntity);
Dropdown with Enum #
enum FileSourceType { firebase, server }
final dropdown = EnumOptionDropDownMenuFormField<FileSourceType>(
selectedValue: selectedOption,
onChanged: (value) => print(value?.type),
hint: 'Select file source',
dropdownItems: [
EnumOptionEntity(type: FileSourceType.firebase, icon: Icons.cloud, label: 'Firebase'),
EnumOptionEntity(type: FileSourceType.server, icon: Icons.storage, label: 'Server'),
],
);
Load Asset as File #
final file = await 'assets/image.png'.loadAsFile();
Load Asset as Bytes #
final bytes = await 'assets/image.png'.loadAssetImage();
State Management Cubits #
DateTimeCubit- Manages date selectionImageCrudCubit- Handles image pick logic and validationSelectionCubit<T>- Generic selection for enum dropdownSwitchCubit- Toggle logicTextFieldCubit- Text field validation
Interfaces #
IFileRepository- Upload/Delete abstractionIFileDiConst- Dependency constant keysIFileDiFactory- Abstract DI factory
Contributions #
Feel free to open issues or pull requests.
License #
MIT License