【问题标题】:BlocBuilder is not updating on state changeBlocBuilder 没有更新状态变化
【发布时间】:2020-06-28 18:37:10
【问题描述】:

我正在尝试使用 BLOC 模式实现播放器。当我在 mapEventToState() 方法中更改状态时,BlocBulder() 小部件未按预期更新。

这是 PlayerBloc:-

class PlayerBloc extends Bloc<PlayerEvent, PlayerState> {
  @override
  get initialState => PlayerState.Initialized;

  @override
  Stream<PlayerState> mapEventToState(PlayerEvent event) async* {
    if (event is InitialLoad) {
      yield PlayerState.Initialized;
    } else if (event is PlayStation) {
      yield PlayerState.Playing;
    } else if (event is StationPlaying) {
      yield PlayerState.Playing;
    } else if (event is StationStopped) {
      yield PlayerState.Stopped;
    } else {
      yield PlayerState.Stopped;
    }
  }
}

这是 BlocBuilder:-

class PlayerCollapsed extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<PlayerBloc, PlayerState>(
      bloc: PlayerBloc(),
      builder: (BuildContext context, PlayerState state) {
        if (state == PlayerState.Initialized) {
          print(state);
          return Center(child: CircularProgressIndicator());
        } else {
          return Text("State Updated");
        }
      },
    );
  }
}

任何帮助将不胜感激。 ????

【问题讨论】:

  • 如何发出事件?你使用不同的 PlayerBloc 实例吗?
  • 我是这样做的:-BlocProvider.of&lt;PlayerBloc&gt;(context).add(PlayStation(station))

标签: flutter bloc flutter-bloc


【解决方案1】:

好吧,发生的事情是您使用了 BlocProvider 提供的 PlayerBloc 实例来发出事件,但您为 BlocBuilder 使用了不同的 PlayerBloc 实例。

如果您已经使用 BlocProvider 将 PlayerBloc 提供给子树,您不想创建一个新的。

class PlayerCollapsed extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<PlayerBloc, PlayerState>(
      // bloc: PlayerBloc(), <= delete this part
      builder: (BuildContext context, PlayerState state) {
        if (state == PlayerState.Initialized) {
          print(state);
          return Center(child: CircularProgressIndicator());
        } else {
          return Text("State Updated");
        }
      },
    );
  }
}

你可能想看看这个https://github.com/felangel/bloc/issues/943#issuecomment-596220570

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 2020-07-20
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多