【问题标题】:StreamBuilder not updating ListView.builder after data changed in Flutter在 Flutter 中更改数据后 StreamBuilder 不更新 ListView.builder
【发布时间】:2019-08-19 12:23:12
【问题描述】:

我是 Flutter 的新手,面临 StreamBuilder 和 ListView.builder 的问题。

根据显示的其他按钮,我正在单击卡列表中可用的按钮(应用按钮)进行网络调用。

我面临的问题是网络调用成功后小部件没有更新,但是当我刷新页面时,我得到了更新的结果。

我做错了什么?

我没有使用任何状态。我需要使用它吗?

小部件代码

StreamBuilder(
          initialData: [],
          stream: dataBoc.ListData,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                itemBuilder: (BuildContext context, index) {
                  return InkWell(
                    key: Key(snapshot.data[index]["lid"]),
                    child: DataCard(
                      DataModel(snapshot.data[index]),
                    ),
                    onTap: () {
                      Navigator.pushNamed(context, "/detailPage",
                          arguments: snapshot.data[index]["id"]);
                    },
                  );
                },
                itemCount: snapshot.data.length,
              );
            }
          },
        ),

区号

//这是我向流中添加数据的方式

if (res.statusCode == 200) {
      var data = json.decode(res.body);
      if (data['status'] == true) {
        // listDataStream.sink.add(data['result']);
        listDataStream.add(data['result']);
      } else {
        listDataStream.sink.addError("Failed to Load");
      }
    }

预期结果:当我拨打网络电话时,如果成功,则根据网络结果,其他按钮必须显示在相应的卡上。

【问题讨论】:

  • 能否提供完整的源代码?
  • @nucleartux 我已经解决了这个问题。谢谢

标签: flutter


【解决方案1】:

我已经解决了这个问题。问题是我的小部件树结构不合理,它破坏了小部件构建过程。

【讨论】:

  • 你能说一下你特别改变了什么吗?我面临着类似的问题。
  • @pyetti 我重组了我的小部件并删除了不必要的小部件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 2020-10-15
  • 2020-03-26
  • 2021-02-07
  • 2020-07-02
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多