Flutter - getting data from stream builder of other page

Viewed 63

I am trying to get firestore data from streambuilder of other page, and it shows me the below error

error: The method 'data' isn't defined for the type 'QuerySnapshot'. (undefined_method at [phonebook_admin]lib\Screens\DetailPage\DetailPage.dart:20)

The below is the code

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class DetailPage extends StatefulWidget {
  final QuerySnapshot contactDetail;
  DetailPage({this.contactDetail});

  @override
  _DetailPageState createState() => _DetailPageState();
}

class _DetailPageState extends State<DetailPage> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Card(
        child: ListTile(
          title: Text(widget.contactDetail.data()['name']),
          subtitle: Text(widget.contactDetail.data()['email']),
        ),
      ),
    );
  }
}
1 Answers

You should do the following:

return ListView.builder(
    shrinkWrap: true,
    itemCount: widget.contactDetail.docs.length,
    itemBuilder: (BuildContext context, int index) {
        return ListTile(
            title: Text(widget.contactDetail.docs[index].data()['name']),
            subtitle: Text(widget.contactDetail.docs[index].data()['email']),
        );
    },
);

QuerySnapshot returns a list of documents with the content of the documents, therefore you need to use a ListView.builder

Related