shared preference displays the old value in release mode

685 Views Asked by At

Shared pref value in release mode shows the old value sometimes, during the my testing it stores the value and can get the new value that I stored just to make sure but after closing application and opening it again, sometimes it shows the the old value, which I stored befoe new one.

here is example of my code: to store and get value:

 void setToken(String userToken) async {
 var sharedPreferences = await shared;
 sharedPreferences.setString("$_token", userToken);
 print("token is: " +sharedPreferences.getString("$_token").toString());
 }
 
 Future getToken() async {
 var sharedPreferences = await shared;
 sharedPreferences.reload();
 String value = sharedPreferences.getString("$_token");
 print("your token: $value");
 return value;
  }

The result message:

in first store ( getting first token): token is: eyJhbG.....Ai-A

Second token storing: token is: eyJhbG....oKk

And after reopening app, I get the 1st token your token: eyJhbG.....Ai-A

Is there anyone that faced the same issue?

3

There are 3 best solutions below

1
On

Please copy-paste the below code:

 void setToken(String userToken) async {
 var sharedPreferences = await shared;
 sharedPreferences.setString("my_token", userToken);
 print("token is: " +sharedPreferences.getString("my_token").toString());
 }
 
 Future getToken() async {
 var sharedPreferences = await shared;
 sharedPreferences.reload();
 String value = sharedPreferences.getString("my_token");
 print("your token: $value");
 return value;
  }
0
On

please paste this solution in your code

 void setToken(String userToken) async {
 var sharedPreferences = await shared;
 sharedPreferences.setString("$_token", userToken);
 print("token is: " +sharedPreferences.getString("$_token").toString());
 }
 
 Future getToken() async {
 var sharedPreferences = await shared;
 String value = sharedPreferences.getString("$_token");
 print("your token: $value");
 return value;
  }
0
On

Try this solution, this might work:

void setToken(String userToken) async {
 SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
 sharedPreferences.setString("my_token", userToken);
 print("token is: " +sharedPreferences.getString("my_token").toString());
 }

Future getToken() async {
 SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
 sharedPreferences.reload();
 String value = sharedPreferences.getString("my_token");
 print("your token: $value");
 return value;
 }

Try flutter clean before run the app.