【问题标题】:Streambuilder with ListView showing same data each tile?带有 ListView 的 Streambuilder 每个图块显示相同的数据?
【发布时间】:2020-06-10 02:41:41
【问题描述】:

尝试使用 StreamBuilder 构建 ListView,但它在 ListView 的每一行中显示一个项目。我正在使用 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 {}
                          },
                        ),
                      ),

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

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      相关资源
      最近更新 更多