Sobes.tech
Junior — Middle

Kāda ir atšķirība starp StreamBuilder un Future komponentiem, strādājot ar asinhronajiem datiem Flutter?

sobes.tech AI

Atbilde no AI

Flutterā FutureBuilder un StreamBuilder tiek izmantoti ar asinhroniem datiem, bet tie atšķiras pēc datu avota veida:

  • FutureBuilder darbojas ar Future objektu — tas ir vienreizējs asinhrons process, kas atgriež rezultātu vai kļūdu. Piemēram, datu ielāde no servera.

  • StreamBuilder darbojas ar Stream — tas ir datu plūsma, kas var emitēt vairākus notikumus laikā. Piemēram, reāllaika datu atjauninājumi vai lietotāja ievades notikumi.

FutureBuilder piemērs:

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

StreamBuilder piemērs:

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

Tādēļ izvēlieties FutureBuilder vienreizējām operācijām un StreamBuilder plūsmas datiem.