В Flutter виджет StreamBuilder играет решающую роль, когда дело доходит до обработки асинхронных потоков данных. Это позволяет вам прослушивать поток данных и соответствующим образом обновлять пользовательский интерфейс. В этой статье мы углубимся в различные методы и примеры кода использования StreamBuilder во Flutter.
-
Базовая реализация StreamBuilder:
StreamBuilder( stream: myStream, builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return Text(snapshot.data); } else if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } else { return CircularProgressIndicator(); } }, ) -
Обработка состояний потока:
-
ConnectionState.active:
if (snapshot.connectionState == ConnectionState.active) { return Text('Stream is active'); } -
ConnectionState.done:
if (snapshot.connectionState == ConnectionState.done) { return Text('Stream has completed'); } -
ConnectionState.waiting:
if (snapshot.connectionState == ConnectionState.waiting) { return Text('Stream is waiting'); }
-
-
Доступ к данным потока:
-
Доступ к последним данным:
final data = snapshot.data; -
Прослушивание изменений данных потока:
snapshot.data.listen((data) { // Handle data updates });
-
-
Обработка ошибок:
if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } -
Обработка исходных данных:
if (!snapshot.hasData) { return Text('No initial data'); } -
Обновление данных потока:
StreamBuilder( stream: myStream, builder: (BuildContext context, AsyncSnapshot snapshot) { return GestureDetector( onTap: () { // Refresh the stream myStreamController.add('Refresh'); }, child: Text(snapshot.data), ); }, )
StreamBuilder — это мощный виджет во Flutter, который позволяет работать с данными асинхронного потока и соответствующим образом обновлять пользовательский интерфейс. Используя методы и примеры кода, представленные в этой статье, вы можете эффективно обрабатывать состояния потока, получать доступ к данным, обрабатывать ошибки и обновлять данные потока при необходимости.