首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Flutter响应式编程:Streams和BLoC

我们将很快看到使用响应式编程的好处......但在此之前我还需要介绍一下最后一个话题:BLoC模式。...BLoC模式 BLoC模式由来自Google的Paolo Soares和Cong Hui设计,并在2018年DartConf期间(2018年1月23日至24日)首次展示。...事实上,BLoC模式最初被设想为允许独立于平台重用相同的代码:Web应用程序,移动应用程序,后端。 它到底意味着什么? BLoC模式利用了我们刚才讨论过的概念:Streams。...如何将此BLoC模式应用于Counter应用? 将BLoC模式应用于Counter 应用可能看起来有点矫枉过正,但请允许我先向你展示...... 我已经听到你说“哇......为什么这一切?...Flutter无法实例化泛型类型 不幸的是,Flutter无法实例化泛型类型,我们必须将BLoC的实例传递给BlocProvider。

4.1K90

flutter_bloc使用解析---骚年,你还在手搭bloc吗!

flutter_bloc使用将从下图的三个维度说明 [flutter_bloc] 前言 首先,有很多的文章在说flutter bloc模式的应用,但是百分之八九十的文章都是在说,使用StreamController...没办法,只能去bloc的github上去找使用方式,最后去bloc官网翻文档。 蛋痛,各位叼毛,就不能好好说说flutter_bloc的使用吗?非要各种抄bloc模式提出作者的那俩篇文章。...使用框架,不拘泥框架,在观察者模式的思想上,灵活的去使用flutter_bloc提供Api,这样可以大大的缩短我们的开发时间!...模式里面,如果页面不是过于复杂,使用Cubit去写,基本完全够用了;但是如果业务过于复杂,还是需要用Bloc去写,需要将所有的事件行为管理起来,便于后期维护 OK,Bloc的简化模块,Cubit模式就这样讲完了...flutter_bloc相关Api白嫖地址:flutter_bloc相关Api flutter_bloc GitHub:https://github.com/felangel/bloc Pub:https

5.1K41

Flutter 专题】88 初识状态管理 Bloc (三)

和尚刚学习了 FlutterBloc 的基本用法,使用的场景还很简单,主要是单一 Bloc 的应用,今天和尚继续尝试多个 Bloc 共用的场景; 和尚继续完善前两节的 Demo,...添加了随机变更背景色的功能(并没有实际意义,仅为了学习新知识点而已); FlutterBloc MultiBlocProvider 对于多个 Bloc 的应用场景,和尚尝试了如下三种方式:...方案一: 在 build() 外创建和初始化 Bloc;和尚认为这种方式一定程度上扩大了 Bloc 的作用域; NumberBloc _numBloc = NumberBloc(); ColorBloc...MultiBlocListener 对于多个 Bloc 的场景,对于其 Bloc 的监听也可以有多种方式; 方案一: 对应于 BlocProvider 的方式,和尚合并前两种,尝试...小感想 和尚尝试了 Provider 和 Bloc 两种状态管理工具,均是对 Stream 的操作,和尚认为各有各的优势,不能互相替代; Bloc 方式最大的优势是把页面 UI 与业务逻辑拆分的更清晰

84541

Flutter 专题】87 初识状态管理 Bloc (二)

可以更便利的实现 Bloc,主要是为了与 Bloc 共同使用而构建的;同样需要提前了解几个概念;和尚继续以上一节中的 Demo 进行扩展,添加了 Number 的递增和递减; BlocBuilder..., }) 分析源码可知,builder 用于相应状态的 Widget,bloc 为当前提供的范围仅限于单个 Widget 且无法通过父级 BlocProvider 和当前级访问的 Bloc...BlocProvider BlocProvider 为 Bloc 的供应者,创建 Bloc 并供应给其子控件树; BlocProvider({ Key key, @required Create...与 BlocBuilder 对应的 bloc 用法相同,如果省略了 bloc 参数,BlocListener 将使用 BlocProvider 和当前函数自动执行查找 BuildContext; condition...of type … 和尚在刚开始尝试 BlocProvider.of(context) 方式获取 Bloc 时报如下错误; ?

94431

Flutter 移动端架构实践:Widget-Async-Bloc-Service

原文链接:https://medium.com/coding-with-flutter/widget-async-bloc-service-a-practical-architecture-for-flutter-apps...在Flutter现有的状态管理技术中,该模式在很大程度上依赖于 BLoCs ,并且非常类似于 RxVMS 架构。...闲言少叙,接下来我很荣幸地介绍: Widget-Async-BLoC-Service 模式 简称:WABS (这很酷,会因为它包含我的缩写 :D)。 这种架构模式有四种变体: 1....数据层/BLoC中的行为 1.BLoC应该是纯Dart的——没有UI代码,没有导入Flutter相关类和文件,也没有在BLoC中使用BuildContext。...与RxVMS比较 在本文中,作为Flutter中已有架构模式的改良,我介绍了Widget-Async-BLoC-Service。 WABS与Thomas Burkhart的 RxVMS模式 最相似。

16K20

Flutter BLoC 异步通信、BlocBuilder的基本使用、BlocProvider的初探

BLoC模式可以将Widget构建UI的代码与业务处理的代码分离出来,在BLoC模式下的应用程序,一般会有全局的BLoC,每一个页面也会对应有一个独立的BLoC。...[在这里插入图片描述] 使用BloC模式Flutter项目应用里的所有组件都在一个事件流,其中一部分组件可以订阅事件,另一部分组件则消费事件 [在这里插入图片描述] *** 2 BloC 的基本使用...BloC是一种架构模式也是一种编程思想,在Flutter中使用BloC时,首先要引入bloc库 dependencies: flutter_bloc: ^6.0.6 然后将依赖库拉取到本地 flutter...packages get 在Flutter BloC模式开发中常用组件有BlocBuilder、BlocProvider、BlocListener和BlocConsumer等等。.../cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart

3.2K11

【源码篇】Flutter Bloc背后的思想,一篇纠结的文章

用过Bloc的靓仔们,肯定能感受到,Bloc框架对开发页面,做了很清晰划分,框架强行定了俩种开发模式 Bloc模式:该模式划分四层结构 bloc:逻辑层 state:数据层 event:所有的交互事件...使用 这边介绍下使用,对官方的用法做了一些调整 调整心路的历程,可参照:flutter_bloc使用解析---骚年,你还在手搭bloc吗!...可生成快捷代码片段 [image-20210612164905296] 用法 插件可生成俩种模式代码:Bloc和Cubit;来看下 Cubit模式 view class CounterPage extends...这里就不重复写怎么使用了,使用明细可参照:flutter_bloc使用解析---骚年,你还在手搭bloc吗!...cancel(); super.dispose(); } } 来看下效果图:详细的使用代码,请查看:flutter_use [builder] Event机制 如果使用Bloc模式开发,会多出一个

2.3K41

FlutterDojo设计之道—状态管理之路(三)

通过Dart提供的Stream机制,Flutter可以很轻松的构建响应式的编程方式,同时也让跨页面、跨Widget的数据管理问题迎刃而解。 Flutter的响应式编程,具有下面几个特点。...的这个特性,Google在数据管理之路上提出了BLoC模式。...在BLoC模式下,Widget与Data彻底解耦: App的业务逻辑处理都在BLoC中 Widget通过Sink向BLoC发送数据 BLoC通过Stream通知Widget重建UI 这其实有点类似MVP...、MVC模式BLoC模式将整个App分为三层,Data Layer、BLoC Layer、UI Layer,Data Layer和UI Layer都只能和BLoC Layer双向通信,但它们之间彼此隔离...下面将官方的counter demo,用BLoC模式重写下,让大家了解下创建BLoC模式的一般范式。

1.6K30

我用flutter做了一个维基How中文版

有了API了,接下来,就创建项目,码代码就是了,看看项目结构 image.png main.dart是工程的入口; bloc目录说明我这个项目是使用了bloc设计模式的,目录里放着各个业务逻辑的bloc...,所以,我的界面很清晰,没有任何请求逻辑,只根据数据展示ui,如果不了解,可以参考这个大佬的文章,介绍了bloc模式是什么,怎么用就用专业的库了,库后面会给出 cache目录是缓存工具类,因为我发现api...widget这里是我封装的一些自定义组件,里面包括,在列表里面播放视频的控件等 所以,需要那些库呢,这里我贴一下 pull_to_refresh: ^1.5.8 flutter_bloc: ^...video_player: ^0.10.8+1 chewie: ^0.9.8+1 neeko: ^0.0.6 其中 : debounce_throttle 是因为搜索的时候要输入关键字,控制调用接口的频率; flutter_bloc...就是一个对bloc设计模式封装得比较好用的库,我推荐使用这个; dio 是网络请求框架,支持restful,请求结果也直接给解析成json了。

2.1K342

一天搞定:Flutter + ChatGPT,打造智能聊天机器人

优秀的全局数据管理方式 flutter_bloc,完美的业务逻辑和界面UI代码分层隔离。flutter_bloc_test,bloc也可以mock测试,完全脱离界面耦合。...调用的是流式API,这和我们平常调用API 接口的方式有点不一样,平常是一次调用一次返回,而流式调用是一次调用多次返回,因此我们可以使用dart 的 stream API 来处理5、但是更好的方式是,使用flutter_bloc...,这样,我们可以将界面UI 和 逻辑部分做到很好的隔离,方便维护全局数据管理Flutter应用中可以使用Flutter_bloc这个全局数据管理库来更好地管理全局数据。...多语言和主题设置的支持Flutter提供了国际化和主题管理API,我们可以将应用所需的各种语言和主题资源文件集中存放,并在应用启动时根据用户选择的语言和主题载入相关资源文件,这部分我使用flutter_bloc...在Flutter应用中,我们可以使用HTTP请求向ChatGPT发送请求,所有的逻辑全部都在flutter_bloc 封装的 逻辑中完成,当然这里用到了 flutter pub 上别人提供的 dart

5.2K71

搭建企业级flutter开发框架(4)

搭建企业级flutter开发框架 app的总体架构 架构图 Data layer, pure Dart, small SDKs 该层用于获取不同来源的数据: network, database,...Domain layer (repositories), pure Dart 该层用于处理不同来源的数据 业务处理但不是展示层的展示处理 每个模块需要有单独的repository UI Layer in Flutter...Flutter widgets 状态管理 依赖包的选择 data layer http:推荐使用 dio,当然可以自己封装 数据存储:shared_preferences,sqflite,flutter_secure_storage...等等 其他的可根据实际需求确定 Domain layer 推荐一些常用的:equatable meta json_serializable UI 最主要的是状态管理,推荐使用Bloc bloc hydrated_bloc...bloc_test 下一步将生成一个具体的框架,放到github,欢迎关注

80310

Flutter完整开发实战详解(十二、全面深入理解状态管理设计)

在所有 响应式编程 中,状态管理一直老生常谈的话题,而在 Flutter 中,目前主流的有 scope_model 、BloC 设计模式flutter_redux 、fish_redux 等四种设计...二、BloC BloC 全称 Business Logic Component ,它属于一种设计模式,在 Flutter 中它主要是通过 Stream 与 SteamBuilder 来实现设计的,所以...BloC 实现起来也相对简单,关于 Stream 与 SteamBuilder 的实现原理可以查看前篇,这里主要展示如何完成一个简单的 BloC 。...当然,如果和 rxdart 结合可以简化 StreamController 的一些操作,同时如果你需要利用 BloC 模式实现状态共享,那么自己也可以封装多一层 InheritedWidgets 的嵌套...相信如果是前端开发者,对于 redux 模式并不会陌生,而 flutter_redux 可以看做是利用了 Stream 特性的 scope_model 升级版,通过 redux 设计模式来完成解耦和拓展

1.9K20
领券