- 支持的数据类型:
bool
:布尔类型,例如true
或false
。
int
:整数类型,如10
。
double
:双精度浮点数类型,例如3.14
。
String
:字符串类型,比如"hello"
。
StringList
:字符串列表类型,例如["item1", "item2"]
。
- 存储自定义对象:
- 步骤:
- 首先将自定义对象转换为
JSON
格式的字符串。这需要自定义对象实现toJson
方法,将对象的属性转换为Map<String, dynamic>
,然后使用jsonEncode
方法将Map
转换为字符串。
- 使用
SharedPreferences
存储这个JSON
字符串。
- 读取时,从
SharedPreferences
中获取字符串,再使用jsonDecode
方法将字符串转换回Map<String, dynamic>
,最后根据这个Map
重建自定义对象。
- 示例代码:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
class User {
String name;
int age;
User({required this.name, required this.age});
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
};
}
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
);
}
}
Future<void> saveUser(User user) async {
final prefs = await SharedPreferences.getInstance();
final jsonString = jsonEncode(user.toJson());
await prefs.setString('user', jsonString);
}
Future<User?> getUser() async {
final prefs = await SharedPreferences.getInstance();
final jsonString = prefs.getString('user');
if (jsonString != null) {
final jsonMap = jsonDecode(jsonString);
return User.fromJson(jsonMap);
}
return null;
}