Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
795 of 1024 menu
◀ ▶

Виджет StreamBuilder

Виджет StreamBuilder слушает stream и передаёт в builder AsyncSnapshot. Состояние соединения читают из ConnectionState. initialData показывают до первого события.

Синтаксис

StreamBuilder<T>( stream: stream, initialData: initialData, builder: (context, snapshot) { return Text('abcde'); }, )

Параметры

Параметр Описание
stream Поток данных, события которого отображают.
builder Строит виджет по текущему snapshot.
initialData Необязательное значение до первого события stream.

Пример

Давайте покажем события простого Stream:

import 'dart:async'; import 'package:flutter/material.dart'; Stream<String> tickStream() async* { yield 'abcde'; await Future<void>.delayed(const Duration(milliseconds: 100)); yield '12345'; } void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: StreamBuilder<String>( stream: tickStream(), builder: (context, snapshot) { return Text(snapshot.data ?? 'wait'); }, ), ), ), ), ); }

На экране StreamBuilder сменит текст с 'abcde' на '12345'.

Пример

Давайте зададим initialData для StreamBuilder:

import 'dart:async'; import 'package:flutter/material.dart'; Stream<int> countStream() async* { await Future<void>.delayed(const Duration(milliseconds: 200)); yield 1; } void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: StreamBuilder<int>( stream: countStream(), initialData: 0, builder: (context, snapshot) { return Text('12345 ${snapshot.data}'); }, ), ), ), ), ); }

На экране StreamBuilder начнёт с '12345 0' благодаря initialData.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить