Stateful vs Stateless Widgets
In Flutter, everything is a widget—from buttons and text to entire screens. But not all widgets are the same. Flutter widgets are broadly classified into two types: Stateless and Stateful widgets. Understanding the difference between these is fundamental to building efficient and dynamic Flutter apps.
What is a Stateless Widget?
A Stateless Widget is a widget that does not store or manage any state. Once it is built, it remains unchanged throughout its lifecycle unless its parent widget instructs it to rebuild.
Stateless widgets are ideal for UI elements that are static or unchanging, such as icons, labels, or layout structures.
Example:
class GreetingText extends StatelessWidget {
final String name;
GreetingText(this.name);
@override
Widget build(BuildContext context) {
return Text('Hello, $name');
}
}
In this example, the GreetingText widget always shows the same output based on the initial input. It doesn't change dynamically unless rebuilt by an external trigger.
What is a Stateful Widget?
A Stateful Widget is a widget that can hold and update state over time. It consists of two classes: the widget class itself and a separate State class where the mutable state is stored.
Stateful widgets are used when the UI must react to user interaction or internal changes, such as a counter, form input, toggle buttons, or animations.
Example:
class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int counter = 0;
void _increment() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Counter: $counter'),
ElevatedButton(
onPressed: _increment,
child: Text('Increment'),
),
],
);
}
}
Here, tapping the button updates the counter and redraws the widget using setState().
Key Differences
Feature Stateless Widget Stateful Widget
Stores Data No Yes
Rebuilds Only when parent changes On internal state change
Complexity Simple Slightly complex (two classes)
Use Cases Static UI Dynamic or interactive UI
Conclusion
Choosing between Stateful and Stateless widgets depends on whether your widget needs to react to changes. For static elements, go with Stateless; for dynamic interactions, use Stateful. Mastering both helps you build clean, efficient, and responsive Flutter apps.
Learn Flutter Training
Read more:
Introduction to Dart Programming for Flutter
How to Create Your First Flutter App
The Widget Tree: How Flutter Builds UI
visit our Quality Through Training Institute
Comments
Post a Comment