按钮在Flutter中保留了Bloc的旧状态
创始人
2024-11-04 08:30:56
0

在Flutter中,可以通过使用StreamBuilderBlocBuilder来解决按钮保留旧状态的问题。

在使用StreamBuilder时,需要将Bloc的状态流作为stream参数传递给StreamBuilder,然后在builder回调函数中根据不同的状态返回相应的按钮状态。

class MyWidget extends StatelessWidget {
  final MyBloc myBloc = MyBloc();

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: myBloc.stateStream,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          if (snapshot.data is LoadingState) {
            return CircularProgressIndicator(); // 显示加载中状态
          } else if (snapshot.data is SuccessState) {
            return RaisedButton(
              onPressed: () {
                // 处理按钮点击事件
              },
              child: Text('按钮'),
            );
          } else if (snapshot.data is ErrorState) {
            return Text('发生错误'); // 显示错误状态
          }
        }
        return Container(); // 默认情况下返回空容器
      },
    );
  }
}

另一种解决方法是使用BlocBuilder,它是针对Bloc的特定实现。BlocBuilderbuilder回调函数中接收BuildContextstate参数,并返回相应的小部件。

class MyWidget extends StatelessWidget {
  final MyBloc myBloc = MyBloc();

  @override
  Widget build(BuildContext context) {
    return BlocBuilder(
      bloc: myBloc,
      builder: (context, state) {
        if (state is LoadingState) {
          return CircularProgressIndicator(); // 显示加载中状态
        } else if (state is SuccessState) {
          return RaisedButton(
            onPressed: () {
              // 处理按钮点击事件
            },
            child: Text('按钮'),
          );
        } else if (state is ErrorState) {
          return Text('发生错误'); // 显示错误状态
        }
        return Container(); // 默认情况下返回空容器
      },
    );
  }
}

注意,以上示例中的MyBlocMyState是假设的,并且需要根据实际情况进行替换。此外,你还需要在适当的地方定义和实现MyBlocMyState

相关内容

热门资讯

黑科技辅助挂!AAPOKEr透... 黑科技辅助挂!AAPOKEr透明挂系统机制,(aapokER)详细辅助存在挂教程(有挂透视)1、AA...
黑科技辅助挂!智星德州菠萝辅助... 黑科技辅助挂!智星德州菠萝辅助器工具,智星德州外挂,2025新版(有挂辅助器);1、智星德州菠萝系统...
黑科技辅助挂!aapOKER透... 黑科技辅助挂!aapOKER透明挂有外挂,(AAPOker)切实真的有挂,透明挂教程(有挂软件);1...
黑科技辅助挂!(AAPOKEr... 黑科技辅助挂!(AAPOKEr)一贯是真的有挂,(aa扑克)果然真的有挂,攻略教程(有挂透明)1、上...
黑科技辅助挂!(WpK)其实有... 黑科技辅助挂!(WpK)其实有挂,(WPK)一贯真的有挂,技巧教程(有挂神器);黑科技辅助挂!(Wp...
黑科技辅助挂!(AAPOKeR... 黑科技辅助挂!(AAPOKeR)果然真的是有挂,(Aapoker)确实是真的有挂,AI教程(有挂黑科...
黑科技辅助挂!AAPOKer透... 黑科技辅助挂!AAPOKer透明挂德州辅助工具,(aaPOKER)切实有挂,详细教程(有挂科技)1、...
黑科技辅助!WepOke透明挂... 黑科技辅助!WepOke透明挂透视挂靠谱,(wePOke)总是有挂,详细教程(有挂总结)1、任何we...
黑科技辅助!wePOKE透明挂... 黑科技辅助!wePOKE透明挂软件规律,(wEPoke)果然是真的有挂,透视教程(有挂软件);wEP...
黑科技辅助挂!(WEpoke)... 黑科技辅助挂!(WEpoke)总是真的有挂,(wEPoke)都是真的是有挂,科技教程(有挂辅助器);...