与refreshindicator扑扑集团streambuilder重建两次

时间:2019-08-21 06:06:53

标签: flutter

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中使用块模式 当我刷新父窗口小部件时,我可以看到blocData.forceRefreshAll()这行被请求两次。(我的意思是构建方法被请求了两次)我怎么只能做一个? 我看到了unwanted rebuild subject,他们说使用实例或initstate,但使用大块模式时,我认为无法使用initstate且const值无法使用  blocData.forceRefreshAll()

1 个答案:

答案 0 :(得分:1)

build方法用于构建窗口小部件树,由于各种原因,可以多次调用它。这就是为什么不应获取build中的数据的原因。 如果由于尚无initState而无法访问context中的bloc-请覆盖另一种方法didChangeDependencies。它在initState之后被调用,并且可以使用context,因此您可以使用它访问bloc provider。