i_tdd 0.0.3
i_tdd: ^0.0.3 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
NoParams
andListQuery
- 🧩 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: latest_version
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 #
IEitherUseCase
IEitherNonFutureUseCase
IEitherStreamUseCase
IOptionUseCase
IOptionStreamUseCase
IFutureOptionStreamUseCase
IStreamUseCase
IFutureUseCase
IUseCase
Params #
NoParams
ListQuery
Extensions #
ErrorHandlingExtension
onObject
ReportEitherExtensions
onEither
FutureStreamDataLoadingExtension
forIFutureOptionStreamUseCase
StreamDataLoadingExtension
forIOptionStreamUseCase
StreamDataHandlingExtension
forOption<Stream>
States #
BaseState
and concrete states:Initial
,DataLoading
,DataLoaded
,ErrorState
, etc.FormSubmissionState
and 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.