Ziv Cheung
Ziv Cheung

Reputation: 77

how to create a list <> in flutter from Firestore?

I am new to flutter. How can I retrieve data from Firestore and form a new profile with every child in my collection? Second question is how can I use this list in another dart file? thank you Thank you.

final List<Profile> demoProfiles = [
Profile (
photos: [
     "https://",
 ],
name: "abc",

),
Profile (
photos: [
  "https://",

],
name: "abc",

)
 ];

Profile.dart enter image description here

Upvotes: 0

Views: 157

Answers (1)

Rafael Lemos
Rafael Lemos

Reputation: 5819

Assuming you have a firestore strucuture like this:

Profile
    photos: []
    name: ""
    age: ""
    distance: ""
    education: ""

You can fetch data and build it into your object with this code snippet:

fetchData() async{
    final db = await Firestore.instance;
    List<Profile> demoProfiles = []
    db.collection("Profile").get().then(function(snapshot){
        snapshot.forEach((document) {
            demoProfiles.add(Profile(
                photos: document.data.photos,
                name: document.data.name,
                age: document.data.age,
                distance: document.data.distance,
                education: document.data.education
            ))
        })
    })
}

Edit:

1) Remove the mockedup list of profiles from your profiles class, it should not be there

2) Edit your mainController to the following:

class _MainControllerState extends State<MainController> {

    List<Profile> demoProfiles = [];

    demoProfiles = fetchData();

    Final MatchEngine match Engine = MatchEngine (
        matches:demoProfiles.map((Profile profile) => Match(profile: profile)).toList();
    );

    fetchData() async{
        final db = await Firestore.instance;
        List<Profile> list = [];
        db.collection("Profile").get().then(function(snapshot){
            snapshot.forEach((document) {
                list.add(Profile(
                    photos: document.data.photos,
                    name: document.data.name,
                    age: document.data.age,
                    distance: document.data.distance,
                    education: document.data.education
                ))
            })
        });
        return list;
    }

}

Upvotes: 1

Related Questions