flutter_kinetra/lib/kt_utils/kt_purchase_restore_utils.dart
2025-09-23 15:09:18 +08:00

49 lines
1.6 KiB
Dart

import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
import '../kt_model/kt_goods_bean.dart';
class KtPurchaseRestoreUtil {
static final KtPurchaseRestoreUtil _instance = KtPurchaseRestoreUtil._internal();
factory KtPurchaseRestoreUtil() => _instance;
KtPurchaseRestoreUtil._internal();
static const String _cacheKey = 'restore_goods_list';
/// 保存失败的goods到本地缓存
Future<void> cacheFailedGoods(KtGoodsBean goods) async {
final prefs = await SharedPreferences.getInstance();
List<String> goodsList = prefs.getStringList(_cacheKey) ?? [];
goodsList.add(json.encode(goods.toJson()));
print('-----goods.toJson:${goods.toJson()}');
await prefs.setStringList(_cacheKey, goodsList);
}
/// 读取本地缓存的goods列表
Future<List<KtGoodsBean>> getCachedGoodsList() async {
final prefs = await SharedPreferences.getInstance();
List<String> goodsList = prefs.getStringList(_cacheKey) ?? [];
return goodsList.map((e) => KtGoodsBean.fromJson(json.decode(e))).toList();
}
/// 清除本地缓存
Future<void> clearCachedGoods() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(_cacheKey);
}
/// 移除指定goods
Future<void> removeGoods(KtGoodsBean goods) async {
final prefs = await SharedPreferences.getInstance();
List<String> goodsList = prefs.getStringList(_cacheKey) ?? [];
goodsList.removeWhere((e) {
final g = KtGoodsBean.fromJson(json.decode(e));
return g.id == goods.id;
});
await prefs.setStringList(_cacheKey, goodsList);
}
}