'Flutter-Firestore: - Code to retrieve data from firestore then save/use it

I am very new to Dart, and coding in general. I have produced this code after watching tutorials on YouTube. For the most part, I have been able to troubleshoot most of my problems on my own, here I feel I need some help. I wanted to extract all the fields from a document and use it. I have tried a few codes but there is no proper solution anywhere online.

Here is the code I used to retrieve it:-

documentID = '9zjwixClgwR1Act1OlPK'

firebaseGetData(documentID){
firebaseFirestore.collection('course').doc(documentID).get().then((value) {
  print(value.data());
});

}

Here is my database file structure:- enter image description here

I want to store all the fields in variables and use them. please help me with the correct code, please.



Solution 1:[1]

There are two ways to retrieve data stored in Cloud Firestore. Either of these methods can be used with documents, collections of documents, or the results of queries:

  • Call a method to get the data

    const docRef=doc(db,’course’,'9zjwixClgwR1Act1OlPK')
    getDoc(docRef)
     .then((doc) => {
        console.log(doc.data(),doc.id)
    }) 
    
  • Set a listener to receive data-change events.

To get real-time data when you set a listener, Cloud Firestore sends your listener an initial snapshot of the data, and then another snapshot each time the document changes.

const docRef=doc(db,’course’,'9zjwixClgwR1Act1OlPK')
onSnapshot(docRef,(doc) => {
       console.log(doc.data(),doc.id)
})

For more information, kindly check link1 & link2

Solution 2:[2]

Firstly you need to create firestore instance. Your function must be async and return a Future value. Also, you can check this document.

final FirebaseFirestore _firestore = FirebaseFirestore.instance;

Future<Map<String, dynamic>> firebaseGetData({required String documentID}) async {
      DocumentSnapshot ds =
          await _firestore.collection("course").doc(documentID).get();
      Map<String, dynamic> data = ds.data() as Map<String, dynamic>;
      print(data["videoDescription"] as String); // check if it null or not
return data;

}

Solution 3:[3]

// creating a instance variable

final CollectionReference firestoreInstance =
      FirebaseFirestore.instance.collection('course');

void _loadUserData() async {
    await firestoreInstance.doc(documentID).get().then((event) {
     // you can access the values by
     print(event['isDOne']);
     print(event['lastViewedOn']);
     print(event['lectureNo']);
     print(event['videoDescription']);
     print(event['videoUrl']);
    });
  }

call the _loadUserData() function whenever you need to fetch the data.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2
Solution 3 Neeraj Shukla