In Flutter, a StatefulWidget is used when you need to manage state in your application. Stateful widgets are dynamic and can update their UI based on changes in the state.
To create a StatefulWidget, follow these steps:
- Define a StatefulWidget class:
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
- Create a corresponding State class:
class _MyWidgetState extends State<MyWidget> {
int counter = 0;
void incrementCounter() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Counter: $counter'),
RaisedButton(
onPressed: incrementCounter,
child: Text('Increment'),
),
],
);
}
}
- Use your StatefulWidget in the application:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('StatefulWidget Example')),
body: MyWidget(),
),
);
}
}
In the above example, we have created a StatefulWidget called MyWidget
. It has a private _MyWidgetState
class that extends State<MyWidget>
. This state class contains a counter
variable and an incrementCounter
function. The state is updated using the setState
method, which triggers a rebuild of the UI.
The build
method of the state class returns a Column
widget with a Text
widget showing the current value of the counter and a RaisedButton
widget to increment the counter.
In the MyApp
class, we have set MyWidget
as the body of the Scaffold
. When the app runs, it will display the MyWidget
with the initial counter value of 0. Clicking the “Increment” button will update the counter and reflect the changes in the UI.
Using a StatefulWidget is essential for managing stateful behavior and updating the UI dynamically in Flutter. It allows you to build interactive and dynamic applications.
By understanding the basics of how to use StatefulWidget, you can now implement state management in your Flutter applications effectively. Happy coding!