mnemo_cards/test_json_deserialization.dart
2025-11-11 02:55:41 +03:00

80 lines
2.1 KiB
Dart

import 'dart:convert';
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
void main() {
final jsonString = '''
{
"id": "5",
"title": "Глаголы I спр.",
"subtitle": "Verbos",
"color": "#FFE90F13",
"version": "19",
"cards": [
{
"id": 28,
"image": "base64image",
"mnemo": "слушать музыку {и скучать}",
"original": "escuchar",
"translation": "слушать",
"transcription": null,
"imageBack": null,
"transcriptionMnemo": null,
"back": null
}
],
"items": [
{
"type": "spacer",
"flex": 1,
"height": 0.0
},
{
"type": "text",
"deeplink": "mnemocards://ad/open?key=5c59b1feb68eaf985a46bb36c51fc40918eb009838362d44af43aebb1f03f62d&id=5&type=pack",
"subtitle": "Эту тему можно открыть, посмотрев рекламу",
"hasBorder": false
},
{
"type": "spacer",
"flex": 0,
"height": 10.0
},
{
"type": "spacer",
"flex": 0,
"height": 20.0
}
],
"price": "100"
}
''';
try {
final json = jsonDecode(jsonString) as Map<String, dynamic>;
print('JSON decoded successfully');
final dto = CardPackBuyDto.fromJson(json);
print('CardPackBuyDto created successfully');
print('ID: ${dto.id}');
print('Title: ${dto.title}');
print('Subtitle: ${dto.subtitle}');
print('Color: ${dto.color}');
print('Price: ${dto.price}');
print('Cards count: ${dto.cards.length}');
print('Items count: ${dto.items?.length}');
// Test items deserialization
dto.items?.forEach((item) {
print('Item type: ${item.type}');
if (item is TextItem) {
print(' TextItem subtitle: ${item.subtitle}');
} else if (item is SpacerItem) {
print(' SpacerItem flex: ${item.flex}, height: ${item.height}');
}
});
} catch (e, s) {
print('Error: $e');
print('StackTrace: $s');
}
}