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

具有刷新指示器重建两次的Flatter bloc streambuilder

章锦
2023-03-14
Widget build(BuildContext context) {
final blocData = WeatherBlocProvider.of(context).bloc;
    if (WeatherBloc.permission == true) {
      blocData.forceRefreshAll();
      return Container(
        child: StreamBuilder(
            stream: blocData.zipAll,
            builder: (scontext, snapshot){
                //to do
               }

现在我在streambuilder中使用bloc模式,当我刷新父窗口小部件时,我可以看到blocData。forceRefreshAll()请求此行两次。(我的意思是构建方法被请求两次)我怎么能只生成一个?我看到了不需要的重建主题,他们说使用instance或initstate,但对于bloc模式,我认为使用initstate是不可能的,const value不适用于blocData。forceRefreshAll()

共有1个答案

巫经义
2023-03-14

构建方法的意思是构建小部件树,由于各种原因它可以被多次调用。这就是为什么不应该在build中获取数据的原因。
如果您不能访问initState中的bloc,因为还没有上下文-重写另一个方法,didChangeDependence。它在initState之后调用,它可以使用上下文,因此您可以使用它访问bloc提供程序。

 类似资料:
  • 我有一个包含在StreamBuilder中的刷新指标。每当StreamBuilder添加了新数据时,刷新指标都会重建其Listview。建筑商在这个过程中跳到了顶端。 StreamBuilder(stream: apiResultStream.stream,Builder:(BuildContext上下文,AsyncSnapshot快照){if(snapshot.has错误){print(有错误)

  • 问题内容: 我有一个基本的node.js设置,但是我想缺少一些东西。 我的: 我的: 问题是我的控制台输出了两次。我想念什么吗?刷新页面时,我只希望有一个。 问题答案: 您所浏览的URL可能还试图获取favicon.ico。尝试仅在命令行上执行以下命令: 另外,您可以为添加日志记录。这将告诉您正在请求哪些URL。

  • vue2开发 需求是没间隔多上时间请获取一次token、token是10分钟有效、我需要在7分钟的时候刷新一次token、然后我使用的是setInterval()方法 没7分钟请求一次, 但是出现的问题是、页面刷线以后setInterval()方法又重新执行了一次、导致没有正常刷新token 如何解决setInterval页面刷新以后不再重新执行 或者利用其他方法

  • 问题内容: 在Python 的列表中,以下代码给出此输出: 是否存在使用JavaScript中的数组执行此操作的简便方法? 我编写了以下函数来做到这一点,但是有没有更短或更短的东西呢? 问题答案: 您可以这样做: 它在每次迭代中将数组加倍,因此可以创建很少迭代的真正大数组。 注意:您还可以通过使用代替来改善您的功能,因为每次迭代都会创建一个新的数组。像这样(作为一个如何使用数组的示例显示):

  • 假设这两个对象有相同的键;

  • 我试图用两个外键(分别用于categories和sub_categories表的category_id和sub_categories_id)为Products表创建一个播种器。 尝试了这个,但它返回了一个错误 未定义变量:类别 我可以创建种子只有子_类,但我需要创建的类别以及。我该怎么做?