I'm trying to implement the same scenario, here is my code:
Main file:
ChangeNotifierProvider<SharedPreferencesData>(
create: (context) => SharedPreferencesData(),
),
ChangeNotifierProxyProvider<SharedPreferencesData, DatabaseService>(
create: (_) => DatabaseService(),
update: (_, sharedPreferencesData, databaseService) {
print('ChangeNotifierProxyProvider RAN');
databaseService..setSpCompanyId = sharedPreferencesData.sPCompanyId;
return null;
},
),
SharedPreferencesData File:
class SharedPreferencesData with ChangeNotifier {
String sPCompanyId = '';
void setCompanyId(String cpID) {
sPCompanyId = cpID;
print('setCompanyId sPCompanyId:$sPCompanyId');
notifyListeners();
}
}
DataBaseService file:
class DatabaseService with ChangeNotifier {
String sPCompanyId = 'empty';
String get getSpCompanyId => sPCompanyId;
set setSpCompanyId(String value) {
print('value in setter database before if: $value');
if (value != getSpCompanyId) {
print('value in setter database: $value');
sPCompanyId = value;
notifyListeners();
}
}
The DatabaseService Class doesn't update. I've added the prints to figure out what is running and what is not.
When I run my code, the prints in Shared_Preferences / setCompanyId method RUNS correctly.
Yet the print function in main.dart file print('ChangeNotifierProxyProvider RAN'); AND in DataBaseService file print('value in setter database: $value'); does not run.
What am I missing? Why the notify sPCompanyId setter notifyListeners() in SharedPreferencesData is not updating DatabaseService String sPCompanyId through the ChangeNotifierProxyProvider? Thanks!