I have implemented SharedPreference in Flutter using the following dependency:
shared_preferences: ^0.5.12+4
My Preference class :
class Preference {
static Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
static saveLoginInfo(VerifyUserLoginResult verifyUserLoginResult) async {
SharedPreferences pref = await _prefs;
pref
.setString("user_login", jsonEncode(verifyUserLoginResult))
.then((value) => print('User Login Value Saved : $value'));
}
static Future<bool> isLoggedIn() async {
SharedPreferences pref = await _prefs;
print('is Logged In : ${pref.getString("user_login")}');
return pref.getString("user_login") != null;
}
}
My logs as follow:
I/flutter (28468): User Login Value Saved : true
I/flutter (28468): is Logged In null
I/flutter (28468): is Logged In: false
Can anyone help me to save the JSON in Preference? I also want to check whether JSON is saved or not to display another screen if already logged in.
Edit:
I have called the method to save String as below:
if (value.verifyUserLoginResult.mID == '1')
{
Preference.saveLoginInfo(value.verifyUserLoginResult),
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context) => Dashboard()))
}
Because you are not adding await before calling saveLoginInfo method. and sharedpreferences save method returns "future"
You need to add await before calling saveLoginInfo
your code should be :