在Flutter中使用BLoC处理数据并更新UI

1,265 阅读1分钟

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) { }