uploadTemplate method
Future<void>
uploadTemplate(
- KoiTemplateManifest manifest
)
Implementation
Future<void> uploadTemplate(KoiTemplateManifest manifest) async {
await Future.delayed(const Duration(milliseconds: 600)); // 模拟网络延迟
final prefs = await SharedPreferences.getInstance();
final jsonStringList = prefs.getStringList(_kCloudTemplatesKey) ?? [];
// 解析已有的列表,检查是否存在同 ID 模板,覆盖或追加
final List<Map<String, dynamic>> existing = [];
for (final str in jsonStringList) {
try {
existing.add(jsonDecode(str) as Map<String, dynamic>);
} catch (_) {}
}
final index = existing.indexWhere((m) => m['id'] == manifest.id);
final newManifestJson = manifest.toJson();
if (index >= 0) {
existing[index] = newManifestJson;
} else {
existing.add(newManifestJson);
}
await prefs.setStringList(
_kCloudTemplatesKey,
existing.map((m) => jsonEncode(m)).toList(),
);
}