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 за потокови данни.