专栏首页向治洪Flutter 应用开发之Bloc模式

Flutter 应用开发之Bloc模式

基本概念

响应式编程

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

响应式编程最初的目的是为了简化交互式用户界面的创建和实时系统动画的绘制而提出来的一种方法,是为了简化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 条评论
登录 后参与评论

相关文章

  • 客户端骨架屏详解

    一直以来,无论是Web还是iOS、Android的应用中,为了提升应用的加载等待这段时间的用户感知体验,各种技术层出不穷。其中,尤以菊花图以及由它衍生各种加载动...

    xiangzhihong
  • Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅

    异步加载图片的例子,网上也比较多,大部分用了HashMap<String, SoftReference<Drawable>> imageCache ,但是现在已...

    xiangzhihong
  • React Native和原生app通信机制详解

    概述 React Native用iOS自带的JavaScriptCore作为JS的解析引擎,但并没有用到JavaScriptCore提供的一些可以让JS与OC互...

    xiangzhihong
  • 程序员用这5种方式学习编程最无效,停止这些可以少走弯路!

    学习编程的弯路多得数不完,坑多得踩不完。 编程是一门手艺,需要不断地进行练习。 但是,不是所有的编程学习和练习都是有效的,下面小编给程序员小伙伴说说无效学习编程...

    Java学习
  • 【入门必备】自学编程,如何做到无师自通?

    又到开学季,无数莘莘学子开始了他乡求知的旅途。求学生活你要怎么开始呢?你是要先享受来之不易的求学生活呢还是继续为人生目标而奋斗。闲言少叙,当今社会一步拉下很有可...

    程序员互动联盟
  • 21.【Kevin聊敏捷】XP极限编程之12最佳实践(一)

    编程圈包括:结对编程(Pair Programming),代码重构(Refactoring),持续测试(Testing)

    开心的Kevin
  • 编程小白 | 每日一练(105)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    闫小林
  • 二十四岁的女生可以转学it吗(已经自学了C语言,C++,写了几个小黑框,看了点数据结构)?

    现在的编程概念已经普及化非常多了,国内程序员已经有百万之众了,在这些程序员中男生居多,当然其中也不乏女士豪杰,女生做程序员在思维上显得更加细腻,女生在程序员领域...

    程序员互动联盟
  • 小白福利,如何入门软件编程

    软件的编程学习是一项系统的工作,作为程序员最重要的就是要有良好的编程能力和方法,这就要求要求程序员具备一定的编程功底,好的编程方式和风格使得代码更加清晰易懂,也...

    企鹅号小编
  • 编程小白 | 每日一练(55)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    闫小林

扫码关注云+社区

领取腾讯云代金券