Bloc中的state

  • Bloc中的state是指应用程序中的当前状态,它反映了用户界面上所显示的数据或视图的状态。
  • 在Bloc架构中,state是不可变的,每次状态发生变化时都会创建一个新的state对象。

数据类型

在Bloc中的state可以是任何数据类型,取决于应用程序的需求。通常情况下,state可以是简单的原始数据类型(如int、double、String等),也可以是复杂的自定义对象。 例如,在一个购物应用程序中,state可以是一个包含购物车商品列表和总价的自定义对象:

class ShoppingCartState {
  final List<Product> products;
  final double totalPrice;
  ShoppingCartState(this.products, this.totalPrice);
}

示例

假设我们有一个计数器应用程序,它有一个初始状态为0的计数器。

class CounterState {
  final int count;
 
  CounterState(this.count);
}

当用户点击增加按钮时,我们会创建一个新的state对象来反映增加后的计数器状态。

class CounterBloc extends Bloc<CounterEvent, CounterState> {
  CounterBloc() : super(CounterState(0));
 
  @override
  Stream<CounterState> mapEventToState(CounterEvent event) async* {
    if (event is IncrementEvent) {
      yield CounterState(state.count + 1);
    }
  }
}

在这个示例中,当接收到增加事件时,我们会创建一个新的CounterState对象并将计数器值加1。这个新的state对象会被发送到UI层以更新视图。