BLoC的全称是 业务逻辑组件(Business Logic Component) ,是一种观察者模式 数据从Bloc而来,从Stream而出,最后会更新Widget
简而言之,BLoC的使用注意点和好处是:
- 将业务逻辑(Business Logic)转移到一个或者多个BLoC中去;
- 尽可能地与表现层(Presentation Layer)分离,换句话说就是UI组件只需要关心UI,而不需要关心业务逻辑;
- input(Sink)和output(Stream)唯一依赖于Streams的使用;
- 保持了平台独立性;
- 保持了环境独立性。
- 代码重用性高
最重要的一点: 每个页面都可以有自己的BLoc
每当创建一个新的页面,比如登录页,就必须创建一个新的BLoc, BLoC仅仅是获取数据并且将其注入到页面中,来向用户展示。
转载于其他的文章
每个模块都有 xxx_bloc.dart , xxx_state.dart , xxx_event.dart
xxx_bloc.dart 继承extends <xxx_event.dart,xxx_state.dart>,
xxx_state.dart 是state集合包括(初始状态,数据加载失败,正常加载数据)
xxx_event.dart 根据不同的event去调用相应的获取数据的方法,
页面上根据不同的state,展示数据,判断如下: if (state is xxxxState) { }
在页面上使用BlocProvider BlocBuilder<xxxxBloc, xxxxState>( builder: (context, state) { }