• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

SharedPreferences 使用

Flutter cps12345 1年前 (2020-07-02) 556次浏览 0个评论

SharedPreferences 是什么

SharedPreferences 用于在 Android 和 iOS 中存储数据键值对的一个 Flutter  插件。

在 iOS 上调用NSUserDefaults,在Android 上调用SharedPreferences,来为简单数据提供持久存储。

SharedPreferences 使用场景

假设要保存一个较小的值(可能是一个标志位),以便稍后在用户启动应用程序时使用。此时SharedPreferences非常适合使用我们不使用SQLite,是因为那样的话就将需要编写冗长的代码和支持类。

SharedPreferences可以轻松地处理少数行的读取和写入。但是请始终记住,SharedPreferences不是复杂关系数据的解决方案。

如何在 Flutter中 使用

步骤1:  添加依赖

将依赖项添加到pubspec.yaml文件。

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: "<newest version>"

步骤2: 导入头文件

import 'package:shared_preferences/shared_preferences.dart';

存储数据

SharedPreferences 只能添加intStringdoublebool

addStringToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setString('stringValue', "abc");
}
addIntToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setInt('intValue', 123);
}
addDoubleToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setDouble('doubleValue', 115.0);
}
addBoolToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setBool('boolValue', true);
}

读取数据

getStringValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return String
  String stringValue = prefs.getString('stringValue');
  return stringValue;
}

getBoolValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return bool
  bool boolValue = prefs.getBool('boolValue');
  return boolValue;
}

getIntValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return int
  int intValue = prefs.getInt('intValue');
  return intValue;
}

getDoubleValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return double
  double doubleValue = prefs.getDouble('doubleValue');
  return doubleValue;
}

如果存储中不存在该值,那么我们可能会得到一个空值。
为了解决这个问题,我们可以使用

int intValue = prefs.getInt('intValue') ?? 0;

删除数据

removeValues() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Remove String
  prefs.remove("stringValue");
  //Remove bool
  prefs.remove("boolValue");
  //Remove int
  prefs.remove("intValue");
  //Remove double
  prefs.remove("doubleValue");
}

检查是否包含数据

SharedPreferences prefs = await SharedPreferences.getInstance();

bool CheckValue = prefs.containsKey('value');
喜欢 (0)

您必须 登录 才能发表评论!