Mobiele ontwikkeling met Flutter · Les

Cloud Firestore-database

Gebruik Cloud Firestore, een NoSQL-documentdatabase, om gegevens realtime op te slaan en te synchroniseren tussen alle verbonden clients.

Les 2 van 412 stappen

Cloud Firestore-database is een gratis Mobiele ontwikkeling met Flutter-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Mobiele ontwikkeling met Flutter. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Mobiele ontwikkeling met Flutter bevat in totaal 4 lessen.

Wat is Cloud Firestore?

Welkom bij Cloud Firestore! Dit is een flexibele, schaalbare NoSQL-documentdatabase van Firebase voor mobiele ontwikkeling, webontwikkeling en serverontwikkeling.

De database houdt je gegevens in realtime gesynchroniseerd tussen client-apps en biedt ondersteuning voor offlinegebruik. Daardoor is deze zeer geschikt voor responsieve apps.

Hoe gegevens worden georganiseerd

Firestore slaat gegevens op in documenten, die lijken op JSON-objecten. Documenten worden georganiseerd in verzamelingen, die containers voor documenten zijn.

  • Verzamelingen: Groepen documenten.
  • Documenten: Sleutel-waardeparen (velden) die subverzamelingen kunnen bevatten.
  • Velden: De daadwerkelijke gegevens in een document.

Firestore versus Realtime Database

Firebase biedt twee databases: Firestore en Realtime Database. Firestore heeft over het algemeen de voorkeur voor nieuwe apps vanwege het intuïtievere gegevensmodel, de krachtige querymogelijkheden en de betere schaalbaarheid.

Zie Firestore als een moderne upgrade met een betere structuur en betere querymogelijkheden voor complexe gegevens.

Firestore gebruiken in Flutter

Als je met Firestore wilt werken, moet je eerst controleren of je Firebase hebt geïnitialiseerd (uit les 1). Haal vervolgens een instantie van FirebaseFirestore op:

Je moet het pakket cloud_firestore toevoegen aan je pubspec.yaml.

import 'package:cloud_firestore/cloud_firestore.dart';
// Ensure Firebase is initialized in your main() or similar
// For example: await Firebase.initializeApp();

void main() {
  FirebaseFirestore db = FirebaseFirestore.instance;
  print("Firestore instance obtained!");
  // You would typically use this 'db' instance
  // within your Flutter widgets.
}

Nieuwe documenten opslaan

Je kunt gegevens aan Firestore toevoegen met set() of add(). Met set() geef je de document-ID op, terwijl add() er automatisch een genereert.

We voegen een nieuwe gebruiker toe aan een verzameling 'users':

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Using .add() - Firestore generates a document ID
  DocumentReference docRef = await db.collection("users").add({
    "name": "Alice",
    "email": "alice@example.com",
    "age": 30,
    "isActive": true
  });
  print("Document added with ID: ${docRef.id}");

  // Using .set() - you provide the document ID
  await db.collection("cities").doc("LA").set({
    "name": "Los Angeles",
    "state": "CA",
    "country": "USA"
  });
  print("City 'LA' added.");
}

Gegevens eenmalig ophalen

Als je één document wilt lezen, verwijs je naar de verzameling en de ID en roep je vervolgens get() aan.

Hiermee haal je de gegevens één keer op. Hierna bekijken we realtime updates.

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Replace 'some_doc_id' with an actual ID from your Firestore
  DocumentSnapshot doc = await db.collection("users").doc("some_doc_id").get();

  if (doc.exists) {
    print("Document data: ${doc.data()}");
    print("User name: ${doc.get('name')}");
  } else {
    print("No such document!");
  }
}

Bestaande documenten wijzigen

Gebruik de methode update() op een documentreferentie om specifieke velden te wijzigen zonder het hele document te overschrijven.

Dit is handig voor kleine aanpassingen aan bestaande records.

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Replace 'some_doc_id' with an actual ID
  String docIdToUpdate = "some_doc_id";

  await db.collection("users").doc(docIdToUpdate).update({
    "age": 31,
    "city": "New York" // Add a new field
  });
  print("Document updated successfully!");

  // You can also update nested fields using dot notation
  // await db.collection("users").doc(docIdToUpdate).update({
  //   "address.street": "Main St"
  // });
}

Documenten en velden verwijderen

Je kunt een volledig document verwijderen of alleen specifieke velden binnen een document.

  • Gebruik delete() op een documentreferentie om het hele document te verwijderen.
  • Gebruik FieldValue.delete() in een aanroep van update() om een specifiek veld te verwijderen.
import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Replace with an actual document ID you wish to delete
  String docIdToDelete = "some_other_doc_id";

  // Delete a specific field from a document
  await db.collection("users").doc("some_doc_id").update({
    "isActive": FieldValue.delete()
  });
  print("Field 'isActive' deleted from document 'some_doc_id'.");

  // Delete an entire document
  await db.collection("users").doc(docIdToDelete).delete();
  print("Document '${docIdToDelete}' deleted.");
}

Realtime gegevensupdates

Een van de krachtigste functies van Firestore is realtime gegevenssynchronisatie. Gebruik snapshots() om te luisteren naar wijzigingen in een document of verzameling.

Je app ontvangt automatisch updates wanneer de gegevens in de database veranderen.

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Listen to a single document
  db.collection("users").doc("some_doc_id").snapshots().listen((snapshot) {
    if (snapshot.exists) {
      print("Real-time update for doc: ${snapshot.data()}");
    } else {
      print("Document no longer exists.");
    }
  });

  // Listen to a whole collection
  db.collection("users").snapshots().listen((snapshot) {
    print("Real-time update for collection. Total docs: ${snapshot.docs.length}");
    for (var doc in snapshot.docs) {
      print("  - ${doc.id}: ${doc.data()['name']}");
    }
  });

  print("Listeners set up. App will now receive real-time updates.");
  // In a real Flutter app, this would be part of a StatefulWidget's initState
  // and listeners would be cancelled in dispose().
}

Geavanceerde gegevensquery's

Met Firestore kun je krachtige query's uitvoeren om je gegevens te filteren en te ordenen. Je kunt meerdere where()-clausules en aanroepen van orderBy() aan elkaar koppelen.

  • where('field', isEqualTo: value)
  • orderBy('field', descending: true)
  • limit(count)

Houd er rekening mee dat je voor complexe query's mogelijk indexen moet maken in de Firebase-console.

Controle van Firestore-bewerkingen

Welke van de volgende uitspraken over Cloud Firestore-bewerkingen zijn WAAR?

Samenvatting van Firestore

Goed gedaan! Je hebt de basis van Cloud Firestore geleerd, waaronder de NoSQL-structuur en het toevoegen, lezen, bijwerken en verwijderen van gegevens.

We hebben ook realtime luisteraars en eenvoudige query's verkend. Firestore is een krachtig hulpmiddel voor het bouwen van dynamische, gegevensgestuurde Flutter-apps!

Vervolgens bekijken we Firebase Cloud Storage voor het verwerken van grotere bestanden, zoals afbeeldingen en video's.

Gratis beginnen

Leer Dart met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
22
Lessen
88

Veelgestelde vragen

Is de les “Cloud Firestore-database” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Mobiele ontwikkeling met Flutter, waaronder “Cloud Firestore-database”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Mobiele ontwikkeling met Flutter bevat in totaal 4 lessen.

Wat leer ik in “Cloud Firestore-database”?

Gebruik Cloud Firestore, een NoSQL-documentdatabase, om gegevens realtime op te slaan en te synchroniseren tussen alle verbonden clients. Je oefent met Mobiele ontwikkeling met Flutter door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Mobiele ontwikkeling met Flutter te beginnen?

Ervaring vooraf is niet nodig. Mobiele ontwikkeling met Flutter op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Cloud Firestore-database”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Mobiele ontwikkeling met Flutter?

Ja. Elke les over Mobiele ontwikkeling met Flutter bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Firebase instellen en authenticatie
  2. Cloud Firestore-database
  3. Cloud Storage en Functions
  4. Firebase Cloud Messaging en notificaties
← Terug naar Mobiele ontwikkeling met Flutter