SharedPreferences 在启动时始终为空 - Flutter

Posted

技术标签:

【中文标题】SharedPreferences 在启动时始终为空 - Flutter【英文标题】:SharedPreferences always null on Startup - Flutter 【发布时间】:2020-06-11 18:15:18 【问题描述】:

如果用户没有注销,我一直试图让他们保持登录状态,只是简单的SharedPreferences 东西,但每次我保存我的 SP 并热重载或热重启我的应用程序时,该功能返回null,就像它没有保存任何东西一样。我已经尝试了一切,但无法弄清楚。这是我的代码:

在启动时获取我的 SP

Future<void> main() async 
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();
  isLoggedIn = prefs.getBool('isLoggedIn');
  Timer(Duration(milliseconds: 100), ()=>print(isLoggedIn));

  runApp(MyApp());

用户登录成功后保存我的 SP

SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setBool('isLoggedIn', true);

  bool isLoggedIn = prefs.getBool('isLoggedIn');

  print(isLoggedIn);

【问题讨论】:

【参考方案1】:

Shared Preferences 上的写入函数是异步的,所以你需要等待它们。

试试await prefs.setBool('isLoggedIn', true);

【讨论】:

以上是关于SharedPreferences 在启动时始终为空 - Flutter的主要内容,如果未能解决你的问题,请参考以下文章

从SharedPreferences保存并检索Intent

SharedPreferences会在使用前不断删除

如何在颤振中创建 SharedPreferences 的 Singleton 类

SharedPreferences 的另一种场景的用法

Flutter + SharedPreferences:如何使用 FutureBuilder

如何在两个不同的 Android 应用程序之间共享 SharedPreferences 文件?