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