如何在flutter中检查此应用程序是否存在SharedPreferences

Ahm*_*gdi 2 android sharedpreferences ios dart flutter

我的 Flutter 应用程序SharedPreferences每次启动时都会检查保存的数据。稍后在应用程序中使用它,但是当我第一次在设备中运行该应用程序时,SharedPreferences尚未保存,因此它将所有数据获取为null. 所以我想确保它检查文件本身是否存在而不是检查特定值,

注意:我正在使用这个shared_preferences futter 包。

这是我的代码:

  checkingTheSavedData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String username = prefs.getString('username');
    if (username == null) {
      Navigator.pushReplacementNamed(context, '/login');
    } else {
      Navigator.pushReplacementNamed(context, '/main_page');
    }
  }
Run Code Online (Sandbox Code Playgroud)

因此,对于第一次运行它确实Navigator.pushReplacementNamed(context, '/main_page');但数据为空,之后当我进行真正的登录并且数据已经保存时,它工作正常。知道如何以适当的方式处理这个问题吗?

kuh*_*yal 11

您需要使用prefs.containsKey('username').


Nqb*_*raL 6

当我使用“shared_preferences”时,我个人使用一个助手来获取和设置,就像这样:

吸气剂

static Future<String> getUserName() async { 
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getString('username') ?? '';
}
Run Code Online (Sandbox Code Playgroud)

设定者

static Future<String> setUserName(String value) async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.setString('username', value);
}
Run Code Online (Sandbox Code Playgroud)

要回答您的问题,您无法检查 SharedPreferences“文件”是否存在。你的方法已经正确了。