将“QueryDocumentSnapshot”转换为 Json

Emi*_*gün 4 firebase flutter

我正在尝试使用 Streambuilder 接收数据并将该数据转换为我的模型的 json 但出现以下错误;所以我的问题是如何将流数据从 firebase 转换为 json

错误

type 'QueryDocumentSnapshot' is not a subtype of type 'Map<dynamic, dynamic>'
Run Code Online (Sandbox Code Playgroud)

模型的FromJson方法

factory Review.fromJson(Map<dynamic, dynamic> json) => Review(
     //Bunch of random fields here);
Run Code Online (Sandbox Code Playgroud)

流生成器

 StreamBuilder<Object>(
                              stream: widget.reviewStream,
                              builder: (context, AsyncSnapshot snapshots) {
                                if (snapshots.hasData) {
                                  var data = snapshots.data.docs;
                                  return ListView.builder(
                                    shrinkWrap: true,
                                    itemCount: data.length,
                                    itemBuilder:
                                        (BuildContext context, int index) {
                                      return Padding(
                                        padding: const EdgeInsets.symmetric(
                                            vertical: 12.0),
                                        child: Padding(
                                            padding:
                                                const EdgeInsets.all(8.0),
                                            child: ReviewBox(
                                              review: Review.fromJson(
                                                  data[index]),
                                              user: widget.user,
                                            )),
                                      );
                                    },
                                  );
                                } else {
                                  return Text('No Data');
                                }
                              }),
Run Code Online (Sandbox Code Playgroud)

Tir*_*tel 7

您需要调用data()方法来data[index]获取Map<String, dynamic>,因为它data[index]是一个QueryDocumentSnapshot

Review.fromJson(data[index].data());
Run Code Online (Sandbox Code Playgroud)