createSubscription method
void
createSubscription()
Implementation
void createSubscription() {
var isNew = widget.onLoad == null;
if (subscription != null) {
subscription!.cancel();
subscription = null;
}
subscription = widget.model.changes.listen((newEvent) {
if (newEvent == event && !isNew) return;
isNew = false;
oldEvent = event;
final shouldBuild =
!((widget.buildWhen == null && newEvent is FormChangedEvent) ||
(widget.buildWhen == null && newEvent is FieldChangedEvent) ||
(widget.buildWhen != null &&
!widget.buildWhen!(widget.model, oldEvent, newEvent)));
if (shouldBuild) {
if (oldEvent is ViewChangedEvent && newEvent is ViewChangedEvent) {
if ((oldEvent as ViewChangedEvent).status == ViewStatus.loading &&
newEvent.status != ViewStatus.loading &&
newEvent.status != ViewStatus.error) {
subscription!.cancel();
createSubscription();
}
}
setState(() {
oldEvent = event;
event = newEvent;
});
}
if (widget.listener != null) widget.listener!(oldEvent, newEvent);
});
}