使用BlocBuilder的StatefulWidget不会在状态更改时重建

时间:2019-11-15 06:16:52

标签: flutter bloc statefulwidget

我正在使用Flutter(BloC模式)来构建一个小部件,该小部件可以流式传输多个相机源。单击供稿后,它就会显示在主供稿中(想想Google环聊中,正在说话的人的脸在前面和中间显示,而其他人在侧面较小)。

尝试切换所选的供稿时,状态(int)会产生Bloc的{​​{1}}的预期新值;但是,主MapEventToState小部件不会切换供稿。

我对CamFeed的这种用法的理解是,当该int更改时,它会返回StatefulWidget 应该重建。相反,似乎什么都没有发生。 BlocBuilder<CamSwitcherBloc, int>仅在首次创建时以及build()中一个子级的状态得到更新时才被调用。

我已经通过天文台确认,正如预期的那样,CamFeed仅存在一个实例。

所以-我是这样认为的:

当我的Bloc内的MapEventToState产生一个新值(selectedCam,在下面的构建器中键入)时,应为我的小部件调用CamSwitcherBloc

如果是正确的话,那么任何关于继续我的狩猎的建议将不胜感激。

谢谢!

build()

1 个答案:

答案 0 :(得分:0)

结果证明这与CamFeed小部件有关。切换后,它确实是在订阅新的供稿,但并未取消旧的供稿。这是CamFeed运作方式的症状,对其他读者来说可能不太有用。

可能与其他人有关: 在这种情况下,虽然CamSwitcherBloc并未重建(尽管我希望这样做),但实际上它的子级(Camfeed)却符合预期。