Sobes.tech
Junior — Middle

Каква е разликата между компонентите 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 за потокови данни.