MST
星途 面试题库

面试题:Flutter 中 SharedPreferences 数据存储的基本使用

请描述在Flutter中如何使用SharedPreferences存储和读取一个字符串类型的数据。请写出关键代码片段,并说明在使用过程中可能遇到的异常及如何处理。
39.4万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试
  1. 引入依赖: 在pubspec.yaml文件中添加shared_preferences依赖:
    dependencies:
      shared_preferences: ^2.0.15
    
    然后运行flutter pub get获取依赖。
  2. 存储字符串数据
    import 'package:shared_preferences/shared_preferences.dart';
    
    Future<void> saveStringToSharedPrefs(String key, String value) async {
      final prefs = await SharedPreferences.getInstance();
      try {
        await prefs.setString(key, value);
      } catch (e) {
        // 处理异常,例如写入失败
        print('Failed to save string to SharedPreferences: $e');
      }
    }
    
  3. 读取字符串数据
    Future<String?> readStringFromSharedPrefs(String key) async {
      final prefs = await SharedPreferences.getInstance();
      try {
        return prefs.getString(key);
      } catch (e) {
        // 处理异常,例如读取失败
        print('Failed to read string from SharedPreferences: $e');
        return null;
      }
    }
    

可能遇到的异常及处理

  • 初始化异常:在SharedPreferences.getInstance()时可能会因为设备问题或权限问题等导致初始化失败。处理方式是在try - catch块中捕获异常,如上述代码示例中,在catch块中打印错误信息,以便开发者定位问题。
  • 类型不匹配异常:如果尝试以错误的类型读取数据(例如,用getString读取一个存储为整数的数据),可能会得到null或引发异常。所以在存储和读取数据时要确保类型匹配。如果不确定数据类型,可以先检查是否存在,再进行读取。
  • I/O 异常:在写入或读取数据时,可能会因为设备 I/O 问题导致操作失败。同样通过try - catch块捕获异常并进行相应处理,如打印错误信息,给用户提供友好提示等。