For routing, I use auto_route and added listening to changes through the provider reevaluateListenable: authProvider but when my provider value changes, nothing happens, why doesn’t listening to changes work and they don’t open another page?
main
Widget build(BuildContext context) {
return Consumer<AuthProvider>(
builder: (context, authProvider, child) {
return MaterialApp.router(
theme: darkTheme,
routerConfig: _appRouter.config(
reevaluateListenable: authProvider,
navigatorObservers: () => [
TalkerRouteObserver(
GetIt.I<Talker>(),
),
],
),
title: 'Flutter Demo',
);
},
);
}
authguard
class AuthGuard extends AutoRouteGuard {
@override
void onNavigation(NavigationResolver resolver, StackRouter router) async {
final AuthProvider appState = AuthProvider();
if (appState.isLoggedIn) {
resolver.next(true);
} else {
resolver.redirect(const AuthRoute());
}
}
}
authprovider
class AuthProvider extends ChangeNotifier implements Listenable {
bool _isLoggedIn = false;
bool get isLoggedIn => _isLoggedIn;
void login() {
_isLoggedIn = true;
notifyListeners();
}
void logout() {
_isLoggedIn = false;
notifyListeners();
}
}
loginscreen
void onPressedMethod(bool isRegister) {
final authProvider = Provider.of<AuthProvider>(context, listen: false);
if (isRegister) {
authProvider.login();
} else {
authProvider.login();
}
}