Most traditional UI frameworks update their interface in response to events triggered by the user (like tapping a button.) In traditional frameworks, the interface’s initial state is described once and then separately updated by user code at runtime. But in Flutter, the developer provides a mapping from different application states to the corresponding interface state. And the framework takes on the task of updating the interface at runtime when the application state changes.