Sobes.tech
Junior — Middle

Mi a különbség a StreamBuilder és a Future komponensek között, amikor aszinkron adatokkal dolgozunk Flutterben?

sobes.tech MI

Válasz az MI-től

Flutterben a FutureBuilder és a StreamBuilder aszinkron adatok kezelésére szolgál, de különböznek az adatforrás típusában:

  • FutureBuilder egy Future objektummal működik — ez egy egyszeri aszinkron művelet, amely eredményt vagy hibát ad vissza. Például adatok betöltése szerverről.

  • StreamBuilder egy Stream-mel működik — ez egy adatfolyam, amely több eseményt is kibocsáthat idővel. Például valós idejű adatfrissítések vagy felhasználói bemeneti események.

FutureBuilder használati példa:

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

StreamBuilder például:

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

Ezért, egy egyszeri művelethez a FutureBuilder-t, folyam adatokhoz pedig a StreamBuilder-t válassza.