I have set up two of the Collections in My Cloud Firestore database in Flutter using JSONSerializable. This is shown below
models.dart
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:json_annotation/json_annotation.dart';
part 'models.g.dart';
enum RecordType {
weightAndReps,
repsOnly,
time,
timeAndWeight,
distance,
}
@JsonSerializable()
class User {
final String id;
final String username;
final String name;
final String email;
final String password;
final String image;
final bool isAdmin;
User(
{this.id = '',
this.username = '',
this.name = '',
this.email = '',
this.password = '',
this.image = '',
this.isAdmin = false});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
@JsonSerializable()
class Exercise {
final String id;
final String name;
final String description;
final String image;
final RecordType recordType;
final String primaryMuscleGroup;
final List<String> secondaryMuscleGroup;
Exercise(
{this.id = '',
this.name = '',
this.description = '',
this.image = '',
this.recordType = RecordType.weightAndReps,
this.primaryMuscleGroup = '',
this.secondaryMuscleGroup = const []});
factory Exercise.fromJson(Map<String, dynamic> json) =>
_$ExerciseFromJson(json);
Map<String, dynamic> toJson() => _$ExerciseToJson(this);
}
However, I am having problems with the Workout Collection due to the number of nested fields and the fact that the Map datatypes in use have more than two elements which I cannot utilise in dart. I am fairly new to this and cannot find much online on how to do this. The collection in question is shown in the image below.
Any help would be greatly appreciated