flutter使用shared_preferences存储一个class结构数组
时间: 2023-08-14 11:05:07 浏览: 145
您可以使用类似于上一个回答中的方法,将class结构转换为JSON格式,并将其作为字符串存储在shared_preferences中。但是,对于class结构数组,您需要将其转换为JSON数组格式,并存储在shared_preferences中。
以下是一个示例代码:
```dart
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
class MyData {
String name;
int age;
bool isStudent;
MyData({this.name, this.age, this.isStudent});
factory MyData.fromJson(Map<String, dynamic> json) {
return MyData(
name: json['name'],
age: json['age'],
isStudent: json['isStudent'],
);
}
Map<String, dynamic> toJson() => {
'name': name,
'age': age,
'isStudent': isStudent,
};
}
// To save the data in shared preferences
Future<void> saveData(List<MyData> dataList) async {
final prefs = await SharedPreferences.getInstance();
final jsonDataList = dataList.map((data) => data.toJson()).toList();
final jsonData = jsonEncode(jsonDataList);
await prefs.setString('myDataList', jsonData);
}
// To fetch the data from shared preferences
Future<List<MyData>> fetchDataList() async {
final prefs = await SharedPreferences.getInstance();
final jsonData = prefs.getString('myDataList');
if (jsonData != null) {
final dataList = jsonDecode(jsonData) as List<dynamic>;
final result = dataList.map((data) => MyData.fromJson(data)).toList();
return result;
}
return null;
}
```
在`saveData()`方法中,我们将数据列表`dataList`转换为JSON数组格式,并将其存储在`myDataList`键下。在`fetchDataList()`方法中,我们获取存储在shared_preferences中的JSON数组,并将其转换为`MyData`类的实例列表。
请注意,如果您要存储大量的数据,建议使用SQLite或其他数据库来存储数据,因为shared_preferences不适合存储大量的数据。
阅读全文