在 Firebase 中存储对象时包括类列表



我在 Flutter 中有一个 User 类,如下所示:

class User {
User({this.name, this.grade, this.workouts});
String name;
int grade;
List<Workout> workouts;
Map<String, dynamic> toJson() => {
'name': _name,
'grade': _grade,
'workout': workouts,
};
}

以及如下所示的锻炼课程:

class Workout {
Workout({this.date, this.shots});
String date;
int shots;
}

我想将用户添加到火烧店集合中,如下所示:Firestore.instance.collection('users').add(_user.toJson());但是当我这样做时,我得到一个:

Unhandled Exception: Invalid argument: Instance of 'Workout'

有什么方法可以解决此问题以使我的 JSON 架构本质上是:

{
"name": name,
"grade": grade,
"workouts": [
{
"date": date,
"shots": shots,
}
] 
}

感谢您的任何帮助。

你的"toJson"函数不正确。正如错误消息所暗示的那样,您将自己的"锻炼"类实例添加到"映射"中。

试试这个:

Map<String, dynamic> toJson() {
List<Map<String, dynamic>> workoutsJson = List();
workouts.forEach((wkt) => workoutsJson.add(wkt.toJson()));
return {
'name': _name,
'grade': _grade,
'workouts': workoutsJson,
};
}

然后在您的锻炼类中,添加一个函数 toJson((,就像您为 User 类所做的那样。

最新更新