I want to update the MaterialApp widget whenever isTokenExpired becomes true...when isTokenExpired updates I'm calling notifyListeners() and builder is called and print statements are executed, but the ValueListenableBuilder is not rebuilding the MaterialApp Widget.
What I am missing?
Hi here is the code:
ValueListenableBuilder(
valueListenable: isTokenExpired,
builder: (context, value, child) {
print("app refresh token:" + currentUser.value.refreshToken.toString());
print("BUILD IS CALLED ");
print("istoken expired | ${isTokenExpired.value}");
return KeyboardDismissOnTap(
child: MaterialApp(
title: "testpal_app",
builder: BotToastInit(),
debugShowCheckedModeBanner: false,
navigatorObservers: [BotToastNavigatorObserver()],
home: isTokenExpired.value
? LoginView()
: StudentWrapper(),
),
);
},
Here is also my ValueNotifier and the method called:
ValueNotifier<bool> isTokenExpired = new ValueNotifier(false);
refreshToken() async {
String url =
'${GlobalConfiguration().getString('base_url')}user/api/token/refresh/';
print(url);
final client = new http.Client();
var res = await client.post(
url,
headers: {
'Content-Type': 'application/json',
},
body: jsonEncode(
{
"refresh": currentUser.value.refreshToken,
},
),
);
var data = json.decode(utf8.decode(res.bodyBytes));
if (res.statusCode == 200) {
print("refresh token successfull");
currentUser.value.accessToken = data['access'];
await setCurrentUser(currentUser.value);
} else {
print(res.statusCode);
print(data);
isTokenExpired.value = true;
isTokenExpired.notifyListeners();
print("refresh token expired");
throw data;
}
}