Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ των components StreamBuilder και Future κατά την εργασία με ασύγχρονα δεδομένα στο Flutter;

sobes.tech AI

Απάντηση από AI

Στο Flutter, FutureBuilder και StreamBuilder χρησιμοποιούνται για εργασία με ασύγχρονα δεδομένα, αλλά διαφέρουν ως προς τον τύπο της πηγής δεδομένων:

  • FutureBuilder λειτουργεί με ένα αντικείμενο Future — είναι μια μονομερής ασύγχρονη λειτουργία που επιστρέφει ένα αποτέλεσμα ή ένα σφάλμα. Για παράδειγμα, φόρτωση δεδομένων από διακομιστή.

  • StreamBuilder λειτουργεί με ένα Stream — είναι ένα ρεύμα δεδομένων που μπορεί να εκπέμψει πολλά γεγονότα με την πάροδο του χρόνου. Για παράδειγμα, ενημερώσεις δεδομένων σε πραγματικό χρόνο ή γεγονότα εισόδου χρήστη.

Παράδειγμα χρήσης του FutureBuilder:

FutureBuilder<String>(
  future: fetchData(),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('Σφάλμα: \\${snapshot.error}');
    } else {
      return Text('Δεδομένα: \\${snapshot.data}');
    }
  },
)

Παράδειγμα χρήσης του StreamBuilder:

StreamBuilder<int>(
  stream: counterStream(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return CircularProgressIndicator();
    }
    return Text('Μετρητής: \\${snapshot.data}');
  },
)

Επομένως, επιλέξτε FutureBuilder για μονομερείς λειτουργίες και StreamBuilder για ρεύματα δεδομένων.