Flutter 中的 SharedPreferences 不持久?
发布时间:2022-05-12 18:54:52 281
相关标签: # 信息
我正在尝试通过使用 SharedPreferences 来实现“记住我”功能。不幸的是,无论我做什么,登录详细信息似乎都不会持续存在。我通过在initState方法中调用它(通过我的 GetX 控制器)在我的登录屏幕上使用 SharedPreferences,如下所示:
final SignInController controller = Get.put(SignInController());
@override
void initState() {
// TODO: implement initState
controller.loadRememberMeDetails();
super.initState();
}
...
Row(
children: [
SizedBox(
height: 24.0,
width: 24.0,
child: GetBuilder(
builder: (s) => Checkbox(
value: s.isChecked,
onChanged: s.handleRememberMe,
),
),
),
SizedBox(width: 5.0),
Material(
color: Colors.transparent,
child: InkWell(
onTap: () {
controller.handleRememberMe(
!controller.isChecked);
},
child: Text(
"Remember Me",
style: TextStyle(
color: Colors.black,
fontSize: 15),
),
))
],
),
我调用以下命令来保存它:
void handleRememberMe(bool? value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setBool("remember_me", value!);
await prefs.setString('email', emailController.text);
await prefs.setString('password', passwordController.text);
print("Remember me: ${emailController.text} ${passwordController.text}");
isChecked = value!;
update();
}
initState()
初始化时调用以下方法:
void loadRememberMeDetails() async {
try {
SharedPreferences prefs = await SharedPreferences.getInstance();
var email = prefs.getString("email") ?? "";
var password = prefs.getString("password") ?? "";
var rememberMe = prefs.getBool("remember_me") ?? false;
if (rememberMe) {
isChecked = true;
emailController.text = email;
passwordController.text = password;
update();
}
} catch (e) {
print(e);
}
}
然而email
等局部变量显示为空。
有没有关于如何修复的想法?
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报