按钮在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

相关内容

热门资讯

无独有偶!wepoker模拟器... 无独有偶!wepoker模拟器哪个,德普辅助器怎么用,真是是真的有挂(有挂方略)1、玩家可以在德普辅...
此事迅速冲上热搜!德州局HHp... 此事迅速冲上热搜!德州局HHpoker透视脚本,德扑之心免费透视,本来真的是有挂(有挂方法)1、德扑...
据权威媒体报道!hhpoker... 据权威媒体报道!hhpoker怎么破解,智星德州可以透视吗,确实真的是有挂(有挂分享)1、起透看视 ...
2026版辅助挂!德普之星有辅... 2026版辅助挂!德普之星有辅助软件吗,德普之星app安卓版破解版,一直确实有挂(有挂教学)1、德普...
第三方技巧!德扑HHpoker... 第三方技巧!德扑HHpoker有挂吗,德扑之星的辅助工具介绍,果然是有挂(有挂规律)1、在德扑之星的...
有消息称!微扑克透视脚本,德扑... 有消息称!微扑克透视脚本,德扑之星怎么设置埋牌,竟然真的是有挂(有挂实锤)1、德扑之星怎么设置埋牌辅...
有了最新消息!wepoker底... 有了最新消息!wepoker底牌透视,德普之星辅助软件,其实存在有挂(有挂方针)1)德普之星辅助软件...
代打辅助挂!wepoker私局... 代打辅助挂!wepoker私局代打,德普之星app安卓版破解版,一贯确实有挂(有挂秘诀)德普之星ap...
做出回应!德普之星辅助工具如何... 做出回应!德普之星辅助工具如何打开,德普之星透视辅助软件下载,切实是真的有挂(竟然有挂)1、每一步都...
据监测!wepoker有没有透... 据监测!wepoker有没有透视方法,智星德州辅助译码插件靠谱吗,真是确实有挂(有挂秘笈)1、智星德...