Flutter 应用开发之Bloc模式

2020-07-14 15:33:18 浏览数 (1)

基本概念

响应式编程

所谓响应式编程,指的是一种面向数据流和变化传播的编程范式。使用响应式编程范式,意味着可以在编程语言中更加方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

响应式编程最初的目的是为了简化交互式用户界面的创建和实时系统动画的绘制而提出来的一种方法,是为了简化MVC软件架构而设计的。在面向对象编程语言中,响应式编程通常以观察者模式的扩展呈现。还可以将响应式流模式和迭代器模式比较,一个主要的区别是,迭代器基于”拉“,而响应式流基于”推“。

使用迭代器是一种命令式编程,由开发者决定何时去访问序列中的next()元素。而在响应式流中,与Iterable-Iterator对应的是Publisher-Subscriber。当新的可用元素出现时,发布者通知订阅者,这种”推“正是响应的关键。此外,应用于推入元素上的操作是声明式的而不是命令式的:程序员要做的是表达计算的逻辑,而不是描述精准的控制流程。

除了推送元素,响应式编程还定义了良好的错误处理和完成通知方式。发布者可以通过调用next()方法推送新的元素给订阅者,也可以通过调用onError()方法发送一个错误信号或者调用onComplete()发送一个完成信号。错误信号和完成信号都会终止序列。

响应式编程非常灵活,它支持没有值、一个值或n个值的用例(包括无限序列),因此现在大量的应用程序开发都悄然使用这种流行的模式进行开发。

Stream

在Dart中,Stream和Future是异步编程的两个核心API,主要用于处理异步或者延迟任务等,返回值都是Future对象。不同之处在于,Future用于表示一次异步获得的数据,而Stream则可以通过多次触发成功或失败事件来获取数据或错误异常。

Stream 是 Dart 提供的一种数据流订阅管理工具,功能有点类似于 Android 中的 EventBus 或者 RxBus,Stream 可以接收任何对象,包括另外一个 Stream。在Flutter的Stream流模型中,发布对象通过 St

0 人点赞