How Does Provider State Management Package Work?

Arslan Raza
2 min readJan 5, 2023

--

The Provider package is a Flutter package that provides an easy way to manage the app state and make it available to other widgets in the app. It does this by using the InheritedWidget class, which allows a widget to pass data down the tree to its descendants.

Here’s an example of how you might use the Provider package to manage the state in a Flutter app:

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

void main() {
runApp(
// Wrap your app in a ChangeNotifierProvider
ChangeNotifierProvider(
create: (context) => MyModel(),
child: MyApp(),
),
);
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Use the Provider to access the state of MyModel
return Scaffold(
body: Center(
child: Text(
// Use the value of MyModel.someValue
Provider.of<MyModel>(context).someValue,
style: Theme.of(context).textTheme.headline4,
),
),
floatingActionButton: FloatingActionButton(
// Use the update method of MyModel to update the state
onPressed: () => Provider.of<MyModel>(context, listen: false).updateSomeValue(),
child: Icon(Icons.update),
),
);
}
}

class MyModel with ChangeNotifier {
String someValue = 'Hello';

void updateSomeValue() {
someValue = 'Updated value';
// Call notifyListeners to notify any listeners that the state has changed
notifyListeners();
}
}

In this example, the MyModel class extends the ChangeNotifier class and holds the state of the app (in this case, a simple string value). The MyApp the widget then uses the Provider.of method to access the state of MyModel and display it on the screen. When the user taps the floating action button, the updateSomeValue the method is called, which updates the value of someValue and calls notifyListeners to let other widgets know that the state has changed.

By using the Provider package, you can easily manage the state of your app and make it available to other widgets without having to pass data down the tree manually.

Thanks for Reading! Cheers!!!

--

--

Arslan Raza
Arslan Raza

Written by Arslan Raza

Mobile Applicaiton Developer

No responses yet