具有列表视图的流生成器在每个磁贴上显示相同的数据?



尝试使用 StreamBuilder 构建列表视图,但它在列表视图的每一行中显示一个项目。我正在使用 StreamBuilder 广播。我使用添加(数据(。

child: StreamBuilder<GoogleAddress>(
stream: pickupStreamController.stream,
builder: (context, snapshot) => ListView.builder(
itemCount: 8,
itemBuilder: (context, index) {
print('Render $index');
if (snapshot.data != null) {
print("${snapshot.data.address}");
return _createListItem(
icon: Icons.location_on,
googleplace: snapshot.data,
onTap: () {
print("${snapshot.data.address}");
});
} else {}
},
),
),

这是我添加到流中的流控制器代码。它在每次迭代中添加不同的GoogleAddress数据。

GoogleAddress addy = GoogleAddress.fromJsonMap(map);
if (sc != null) {
sc.add(addy);
}

StreamBuilder将使用流中的最新值。要将列表传递给StreamBuilder您需要将列表传递给add

这意味着要随着时间的推移增加列表,您必须保留一个常规列表并在修改后将其传递给add

final addresses = [];
GoogleAddress addy = GoogleAddress.fromJsonMap(map);
addresses.add(addy);
controller.add(addresses);

最新更新