i_tdd 0.0.2
i_tdd: ^0.0.2 copied to clipboard
A utility-first Dart package for Clean Architecture and TDD in Flutter. Provides abstract use cases, parameter classes, error-handling extensions, and bloc-ready states.
i_tdd #
A utility-first package for simplifying Clean Architecture and Test-Driven Development in Flutter using Dart. It provides a wide range of abstract use cases, parameter objects, error handling extensions, and state classes, all designed to make your code more modular, testable, and maintainable.
Features #
- ✅ Ready-to-use abstract classes for Future, Stream, Either, and Option-based use cases
- 🧱 Parameter classes like
NoParamsandListQuery - 🧩 Extensions for error handling and reporting with
Either - 🧼 Clean Bloc state classes and a utility
LoadingCubit - 🧪 Designed with TDD and Clean Architecture in mind
Installation #
Add the package to your pubspec.yaml:
dependencies:
i_tdd: ^0.0.1
Then run:
flutter pub get
Usage #
1. Define a Use Case #
class GetItems extends IEitherUseCase<List<Item>, NoParams> {
@override
Future<Either<IFailure, List<Item>>> call(NoParams params) {
// implement business logic
}
}
2. Bloc Integration #
class ItemsCubit extends Cubit<BaseState> {
final GetItems getItems;
ItemsCubit(this.getItems) : super(Initial());
void fetchItems() async {
emit(DataLoading());
final result = await getItems(NoParams());
result.handleReport(
onSuccess: (data) => emit(DataLoaded()),
onFailed: (msg) => emit(ErrorState(msg)),
onEmpty: () => emit(ErrorState('No items found')),
);
}
}
3. Load Stream Data #
streamUseCase.loadStreamData(
params: NoParams(),
onLoading: () => emit(DataLoading()),
onSuccess: (data) => emit(DataLoaded()),
onEmpty: () => emit(ErrorState('No stream data')),
onFailed: (msg) => emit(ErrorState(msg)),
);
API Overview #
Abstract Use Cases #
IEitherUseCaseIEitherNonFutureUseCaseIEitherStreamUseCaseIOptionUseCaseIOptionStreamUseCaseIFutureOptionStreamUseCaseIStreamUseCaseIFutureUseCaseIUseCase
Params #
NoParamsListQuery
Extensions #
ErrorHandlingExtensiononObjectReportEitherExtensionsonEitherFutureStreamDataLoadingExtensionforIFutureOptionStreamUseCaseStreamDataLoadingExtensionforIOptionStreamUseCaseStreamDataHandlingExtensionforOption<Stream>
States #
BaseStateand concrete states:Initial,DataLoading,DataLoaded,ErrorState, etc.FormSubmissionStateand states:InitialFormState,FormSubmitting,SubmissionSuccess,SubmissionFailed
Utilities #
LoadingCubit- Typedefs for
SuccessCallback,FailureCallback,StreamCallback
License #
MIT License. See LICENSE for details.
Contribution #
Contributions are welcome! Please submit issues and pull requests to help improve this package.