Search⌘ K
AI Features

StateProvider Widget: Read Function

Explore how to effectively use the StateProvider widget's read function in Riverpod for Flutter state management. Learn to update state objects like integers and strings while minimizing widget rebuilds, enhancing app performance and clarity in your Flutter development.

Reading the StateProvider

The following controller widget is the most important one, where we have used the Riverpod’s read() method to change the state of the provided objects.

Dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../model/any_type_provider_model.dart';
void increment(BuildContext context) {
context.read(stateProviderInteger).state += 1;
}
void changeName(BuildContext context) {
context.read(stateProviderName).state = 'Json!';
}
void changeCity(BuildContext context) {
context.read(stateProviderCity).state = 'Jericho!';
}
void clearName(BuildContext context) {
context.read(stateProviderName).state = 'John';
}
void clearCity(BuildContext context) {
context.read(stateProviderCity).state = 'Chicago';
}
void changeLittleMonk(BuildContext context) {
context.read(stateProviderClass).state =
StateProviderModel('Now I am a big monk with white beard!', 70);
}
void reverseAgeOfLittleMonk(BuildContext context) {
context.read(stateProviderClass).state =
StateProviderModel('Now I am a little monk again!', 6);
}

We can notice that we have passed the BuildContext context inside each method, so the data flows through that context, and we can read the Provider state. The Provider state object is either integer, or string, or even a data class. However, in each case, the distinction is clear enough. Because our application logic is clear, it’s become easier for us to visualize what will happen.

In our application, we have pressed several buttons, however the Scaffold widget has not been rebuilt. You can track the widget ...