In one word: performance. The tldr version is that State objects are long lived, but StatefulWidget s (and all Widget subclasses) are thrown away and rebuilt whenever configuration changes . It’s very inexpensive ie cheap for Flutter to rebuild a mutable widget.