Flutter教程SharedPreferences轻量级存储

“在Flutter中使用SharedPreferences进行轻量级存储时,遇到保存的数据在应用重启后丢失的情况,该如何解决?我在iOS和Android设备上都测试过,发现保存的布尔值和字符串有时会失效。官方文档说SharedPreferences适合存储简单数据,但没提到具体的失效场景。有没有人遇到过类似问题?是SharedPreferences的持久化机制有延迟,还是说在某些系统版本上存在兼容性问题?另外,除了SharedPreferences,Flutter中还有哪些更可靠的轻量级存储方案?”

3 回复

在Flutter中使用SharedPreferences进行轻量级存储非常简单。首先确保添加依赖shared_preferences: ^2.0.6到pubspec.yaml文件。

  1. 导入库:import 'package:shared_preferences/shared_preferences.dart';

  2. 写数据:通过await SharedPreferences.getInstance()获取实例,然后调用setString, setInt, setBool等方法保存数据。

    示例:

    Future<void> saveData() async {
      final prefs = await SharedPreferences.getInstance();
      await prefs.setString('username', 'JohnDoe');
      await prefs.setInt('age', 25);
    }
    
  3. 读取数据:使用对应的getString, getInt等方法读取之前保存的数据。

    示例:

    Future<void> loadData() async {
      final prefs = await SharedPreferences.getInstance();
      String? username = prefs.getString('username');
      int? age = prefs.getInt('age');
      print('Username: $username, Age: $age');
    }
    
  4. 删除数据:调用remove方法删除指定键值对。

    示例:

    Future<void> deleteData() async {
      final prefs = await SharedPreferences.getInstance();
      await prefs.remove('username');
    }
    

SharedPreferences适合保存简单的配置信息,如用户设置、登录状态等,不适合存储大量或复杂的数据结构。

更多关于Flutter教程SharedPreferences轻量级存储的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter 中使用 SharedPreferences 实现轻量级存储非常方便。首先,添加依赖:shared_preferences: ^2.0.6

  1. 初始化 SharedPreferences:
import 'package:shared_preferences/shared_preferences.dart';

Future<void> saveData(String key, String value) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setString(key, value);
}

Future<String?> readData(String key) async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString(key);
}
  1. 示例代码:
void main() async {
  // 写入数据
  await saveData('username', 'JohnDoe');
  
  // 读取数据
  String? username = await readData('username');
  print(username); // 输出 JohnDoe
}

注意:SharedPreferences 适合存储简单的键值对,如字符串、布尔值等。对于复杂数据结构,建议使用数据库或 JSON 文件存储。同时,操作时需处理好异步逻辑,避免 UI 卡顿。

Flutter SharedPreferences 轻量级存储教程

SharedPreferences 是 Flutter 中用于存储少量简单数据(如用户偏好设置、应用配置等)的一种轻量级解决方案。

基本使用步骤

  1. 首先添加依赖到 pubspec.yaml:
dependencies:
  shared_preferences: ^2.2.2
  1. 导入库:
import 'package:shared_preferences/shared_preferences.dart';

常用操作

1. 获取 SharedPreferences 实例

final prefs = await SharedPreferences.getInstance();

2. 写入数据

// 存储字符串
prefs.setString('username', 'John');

// 存储整数
prefs.setInt('age', 25);

// 存储布尔值
prefs.setBool('isDarkMode', true);

// 存储浮点数
prefs.setDouble('rating', 4.5);

// 存储字符串列表
prefs.setStringList('favorites', ['Flutter', 'Dart', 'Firebase']);

3. 读取数据

String username = prefs.getString('username') ?? 'default';
int age = prefs.getInt('age') ?? 0;
bool isDarkMode = prefs.getBool('isDarkMode') ?? false;
double rating = prefs.getDouble('rating') ?? 0.0;
List<String> favorites = prefs.getStringList('favorites') ?? [];

4. 删除数据

prefs.remove('username'); // 删除单个键
prefs.clear(); // 清除所有数据

完整示例

Future<void> saveUserData() async {
  final prefs = await SharedPreferences.getInstance();
  
  await prefs.setString('username', 'flutter_dev');
  await prefs.setInt('age', 30);
  await prefs.setBool('isPremium', true);
  
  print('数据保存成功');
}

Future<void> readUserData() async {
  final prefs = await SharedPreferences.getInstance();
  
  String username = prefs.getString('username') ?? '未设置';
  int age = prefs.getInt('age') ?? 0;
  bool isPremium = prefs.getBool('isPremium') ?? false;
  
  print('用户名: $username');
  print('年龄: $age');
  print('是否会员: $isPremium');
}

SharedPreferences 适用于少量简单数据的存储,对于更复杂的数据结构或大量数据,建议使用数据库解决方案如 sqflite 或 Hive。

回到顶部