在Flutter Bloc侦听器中调用setState

时间:2020-10-14 07:35:12

标签: flutter dart setstate bloc

我在颤动的BlocListener中调用setState。这样做有什么问题吗?

....
return BlocListener<XBloc, XState>(
      listener: (context, state) {
        if (state is XLoadedState) {
          setState(() {
            name = state.name;
          });
        }....
....

1 个答案:

答案 0 :(得分:0)

这不是问题,但是有点无用和反模式。使用setState会强制所有内容进行重建,即使没有必要。

您可以将使用name的小部件包装到BlocBuilder<XBloc,XState>中,例如:

BlocBuilder<XBloc,XState>(
  builder: (context, state){
    if (state is XLoadedState){
      return Text(state.name);
    }else{
      //return something for when state.name is null, I guess
    }
  }
)

您可以查看有关此here

的更多信息