wjuniorgit/combine-bloc
> An implementation of the ´BLoC´ (Business Logic Component) with Apple's Combine framework.
Installation
Add this project on your Package.swift
import CombineBloc
let package = Package(
dependencies: [
.Package(url: "https://github.com/wjuniorgit/combine-bloc", from: "0.2.0"),
],
)Usage example
This package has three use case examples implemented:
- [Counter App][counter-example]
- [Login App][login-example]
- [Todos App][todo-example]
Counter Bloc example
Counter Events
enum CounterEvent: Equatable {
case increment
case decrement
}Counter State
struct CounterState: Equatable {
let count: Int
}Counter Bloc
final class CounterBloc: Bloc<CounterEvent, CounterState> {
init() {
super.init(initialValue: CounterState(count: 0)) {
event, state, emit in
switch event {
case .increment:
emit(CounterState(count: state.count + 1))
case .decrement:
emit(CounterState(count: state.count - 1))
}
}
}
}Release History
- 0.2.0
* The first proper release
- 0.1.0
* Work in progress
Meta
Wellington Soares
Distributed under the MIT license. See `LICENSE` for more information.
[swift-image]:https://img.shields.io/badge/swift-5.3-orange.svg [swift-url]: https://swift.org/ [license-image]: https://img.shields.io/badge/License-MIT-blue.svg [license-url]: LICENSE [bloc-video-url]: https://youtu.be/PLHln7wHgPE?t=1288 [bloc-lib-url]: https://bloclibrary.dev/ [counter-example]: Examples/Counter/ [login-example]: Examples/login/ [todo-example]: Examples/Todos/
Package Metadata
Repository: wjuniorgit/combine-bloc
Default branch: main
README: README.md