RxFlow에서는 다음과 같은 용어들을 사용합니다.
class AppFlow {
switch step {
case .main:
let plantTabFlow = PlantTabFlow()
let calendarTabFlow = CalendarTabFlow()
let myInfoTabFlow = MyInfoTabFlow()
// Flow를 준비 - 클로저는 Flow가 배치될 준비가 되었을 때(Flow의 첫 번째 화면이 선택되었을 때) 실행될 동작
Flows.use(plantTabFlow, calendarTabFlow, myInfoTabFlow, when: .created) { [weak self] plant, calendar, my in
...
}
return .multiple(flowContributors: [
.contribute(withNextPresentable: plantTabFlow, withNextStepper: OneStepper(withSingleStep: AppStep.plantTab)),
.contribute(withNextPresentable: calendarTabFlow, withNextStepper: OneStepper(withSingleStep: AppStep.calendarTab)),
.contribute(withNextPresentable: myInfoTabFlow, withNextStepper: OneStepper(withSingleStep: AppStep.myInfoTab))
])
}
}
Flows.use(_ , when: ) 메서드에서, when 시점에는 .created와 ready 2가지가 존재한다.
.created: The completion block will be executed instantly.ready: The completion block will be executed once the sub flows (SettingsFlow in the example) have emitted a first stepFlows.use 메서드는 주어진 Flow들의 초기 설정을 완료하고 클로저를 실행한다. 이때, 클로저가 실행될 시점은 when 매개변수로 결정한다.
.created의 경우에는 즉시 클로저를 실행한다.
.ready의 경우에는 서브 Flow가 첫 번째 step을 방출했을 때 실행한다.
위 코드의 경우, Flow가 별도로 첫 step을 방출하지 않으므로 .created를 사용하였다.