当前位置: 首页 > 知识库问答 >
问题:

Flutter中数据更改后StreamBuilder不更新ListView.builder

朱炜
2023-03-14

我是Flutter的新手,面临着StreamBuilder的问题

我在点击卡片列表中可用的按钮(应用按钮)时进行网络呼叫,基于显示的其他按钮。

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

我做错了什么?

我没有在这方面使用任何状态。我需要用它吗?

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");
      }
    }

预期结果:当我进行网络呼叫时,如果成功,那么根据网络结果,其他按钮必须显示在相应的卡上。

共有1个答案

邹斌
2023-03-14

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

 类似资料:
  • RecycerView只显示创建时ArrayList(适配器的数据)中的项。我所有添加更多行的尝试似乎都奏效了,但列表仍然是初始数据。它不是重复的,因为我尝试了谷歌上找到的所有建议。我已经做了什么: Adapter.NotifyDataSetChanged(); Adapter.NotifyItemChanged(5); recyleList.invalidate(); recyclelist.s

  • UserViewModel: 用户存储库:

  • 问题内容: 我正在尝试编写一些搜索输入,以使用ngResource从数据库中获取数据。 数据在页面上显示为ng-repeat,但是当我执行搜索并且$ scope已更新时,该视图未更新并显示旧数据。 这是代码: main.html(活动视图) main.js searchbar.js 当它启动时,它从数据库中获取所有数据并正确显示它们,当我尝试进行搜索时,$ scope.eventi会更新(我可以从

  • 这个问题可能已经得到了回答,我读过很多类似的,但对我不起作用。因此,我的具有扩展的自定义表模型。我的数据是和列名。那么,当我的数据发生更改时,如何更新表呢?我一直在使用,它正在工作,但它将我的自定义单元格呈现器重置为默认值。谢了。

  • 我正在从ListView迁移到RecyclerView,但是在SQLite中输入一些数据之后,我的列表没有使用notifyDataSetChanged()更新;所以我总是必须调用setAdapter()方法; 回收器ViewAdapter 观赏者 模型

  • 我使用Eclipse创建了一个网站,Servlet在其中将数据发送到jsp。但是我不知道为什么我在Servlet中更改数据。它仍然将旧数据发送到jsp。即使我尝试了这些选项.. 菜单-项目-清理(如果不使用自动构建,请单击此选项) 菜单-项目-项目自动构建(选中此选项) 下面是一个例子: Product.java ProductModel.java ProductController.java i