summaryrefslogtreecommitdiff
path: root/lib/game_data.dart
blob: 3c7c77b1d4e644cc5b14046e9b0751064c4d3274 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class GameData {
  List<String> playerNames;
  Map<int, int> pars;
  Map<int, List<int>> scores;
  DateTime date;

  GameData({
    this.playerNames = const [],
    this.pars = const {},
    this.scores = const {},
    required this.date,
  });

  Map<String, dynamic> toJson() => {
    'playerNames': playerNames,
    'pars': pars.map((key, value) => MapEntry(key.toString(), value)),
    'scores': scores.map((key, value) => MapEntry(key.toString(), value)),
    'date': date.toIso8601String(),
    // No need to serialize 'winner' as it's derived from scores
  };

  factory GameData.fromJson(Map<String, dynamic> json) => GameData(
    playerNames: List<String>.from(json['playerNames']),
    pars: Map<int, int>.from(json['pars'].map((key, value) => MapEntry(int.parse(key), value))),
    scores: Map<int, List<int>>.from(json['scores'].map((key, value) => MapEntry(int.parse(key), List<int>.from(value)))),
    date: DateTime.parse(json['date']),
  );
}