StatefulWidgets are separated into 2 classes because one part is entirely immutable . Widget subclass cannot store any mutable field. We are not in React where “Components” are mutable and the instance stays the same for the whole life of the component.