Sobes.tech
Junior — Middle

Czym różnią się komponenty StreamBuilder i Future podczas pracy z danymi asynchronicznymi w Flutterze?

sobes.tech AI

Odpowiedź od AI

W Flutterze FutureBuilder i StreamBuilder służą do pracy z danymi asynchronicznymi, ale różnią się pod względem typu źródła danych:

  • FutureBuilder działa z obiektem Future — jest to jednorazowa asynchroniczna operacja, która zwraca wynik lub błąd. Na przykład ładowanie danych z serwera.

  • StreamBuilder działa z Stream — jest to strumień danych, który może emitować wiele zdarzeń w czasie. Na przykład, aktualizacje danych w czasie rzeczywistym lub zdarzenia wejścia użytkownika.

Przykład użycia FutureBuilder:

FutureBuilder<String>(
  future: fetchData(),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('Błąd: \\${snapshot.error}');
    } else {
      return Text('Dane: \\${snapshot.data}');
    }
  },
)

Przykład użycia StreamBuilder:

StreamBuilder<int>(
  stream: counterStream(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return CircularProgressIndicator();
    }
    return Text('Licznik: \\${snapshot.data}');
  },
)

W związku z tym, wybierz FutureBuilder dla operacji jednorazowych i StreamBuilder dla danych strumieniowych.