MST

星途 面试题库

面试题:Flutter中异步加载数据缓存策略的基本实现方式

在Flutter中,简要描述如何使用本地存储(如shared_preferences)实现异步加载数据的简单缓存策略。请阐述主要步骤和涉及的关键代码。
38.6万 热度难度
前端开发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<String?> loadData() async {
      final prefs = await SharedPreferences.getInstance();
      return prefs.getString('key');
    }
    
  3. 保存数据: 同样获取SharedPreferences实例,然后保存数据,例如保存字符串数据:
    Future<void> saveData(String value) async {
      final prefs = await SharedPreferences.getInstance();
      await prefs.setString('key', value);
    }
    
  4. 缓存策略实现
    • 在需要数据的地方,先尝试从本地存储加载数据。
    String? data = await loadData();
    if (data!= null) {
      // 使用缓存的数据
    } else {
      // 从网络或其他数据源获取数据
      String newData = await fetchDataFromNetwork();
      // 保存新获取的数据到本地存储
      await saveData(newData);
      // 使用新获取的数据
    }
    
    • 其中fetchDataFromNetwork是自定义的从网络获取数据的异步方法。

主要步骤总结:

  1. 引入shared_preferences依赖。
  2. 编写加载和保存数据的异步方法。
  3. 在业务逻辑中,先尝试从本地存储加载数据,若不存在则获取新数据并保存到本地存储。

关键代码:

  • 加载数据:
    Future<String?> loadData() async {
      final prefs = await SharedPreferences.getInstance();
      return prefs.getString('key');
    }
    
  • 保存数据:
    Future<void> saveData(String value) async {
      final prefs = await SharedPreferences.getInstance();
      await prefs.setString('key', value);
    }