You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何使用Shared Preferences保存Vehicle对象列表?

使用shared_preferences保存和读取Vehicle对象列表

shared_preferences仅支持存储基础数据类型及字符串列表,因此我们需要将Vehicle对象序列化为JSON字符串后存储,读取时再反向解析为对象。结合你已实现的toJson()和fromJson()方法,具体操作如下:

1. 保存Vehicle列表

将每个Vehicle对象转成JSON字符串,组成列表后存入shared_preferences:

import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';

Future<void> saveVehicles(List<Vehicle> vehicles) async {
  final prefs = await SharedPreferences.getInstance();
  // 把每个Vehicle转为JSON字符串
  final vehicleJsonStrings = vehicles.map((v) => jsonEncode(v.toJson())).toList();
  await prefs.setStringList('saved_vehicles', vehicleJsonStrings);
}

2. 读取Vehicle列表

从shared_preferences取出字符串列表,逐个解析为Vehicle对象:

Future<List<Vehicle>> loadVehicles() async {
  final prefs = await SharedPreferences.getInstance();
  final vehicleJsonStrings = prefs.getStringList('saved_vehicles');
  
  // 无存储数据时返回空列表
  if (vehicleJsonStrings == null) return [];
  
  // 把每个JSON字符串转回Vehicle对象
  return vehicleJsonStrings.map((str) => Vehicle.fromJson(jsonDecode(str))).toList();
}

可选简化方案:单JSON字符串存储

如果对象数量较多,也可以把整个列表转成一个JSON字符串存储,减少键值对操作:

保存

Future<void> saveVehicles(List<Vehicle> vehicles) async {
  final prefs = await SharedPreferences.getInstance();
  final jsonStr = jsonEncode(vehicles.map((v) => v.toJson()).toList());
  await prefs.setString('saved_vehicles', jsonStr);
}

读取

Future<List<Vehicle>> loadVehicles() async {
  final prefs = await SharedPreferences.getInstance();
  final jsonStr = prefs.getString('saved_vehicles');
  
  if (jsonStr == null) return [];
  
  final List<dynamic> jsonList = jsonDecode(jsonStr);
  return jsonList.map((json) => Vehicle.fromJson(json)).toList();
}

使用示例

// 保存示例
final myVehicles = [
  Vehicle(vehicleId: 'v001', vehicleType: '轿车'),
  Vehicle(vehicleId: 'v002', vehicleType: '摩托车'),
];
await saveVehicles(myVehicles);

// 读取示例
final loadedVehicles = await loadVehicles();
print(loadedVehicles.first.vehicleType); // 输出:轿车

内容的提问来源于stack exchange,提问作者x98lol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:35:21