首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter BLoC 教程:使用 BLoC 模式的状态管理

模式的优缺点 在我们进入 flutter bloc 教程之前,我们说说 bloc 设计模式的优缺点。...✅ 简单应用不推荐使用 ✅ 有更多标准化代码,但可以通过扩展解决 Flutter BLoC 教程目标 我们将构建相关简单的应用,来演示 BLoC 如何使用流来管理状态,并为 bloc 编写一些测试。...如果它们相等,将用于测试 bloc 使用 BLoC 模式进行 Event 和 State 管理 class AppBlocBloc extends Bloc { final List textList...'package:text_change/text_controller.dart'; import 'bloc/app_bloc_bloc.dart'; import 'bloc/app_bloc_state.dart...测试 BLoC 设计模式 为了测试 bloc,我们需要安装以下两个包: ✅ bloc_test ✅ flutter_test 在测试 test 文件夹中,创建名为 app_bloc_test.dart

14210
您找到你想要的搜索结果了吗?
是的
没有找到

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

flutter_bloc使用将从下图的三个维度说明 [flutter_bloc] 前言 首先,有很多的文章在说flutter bloc模式的应用,但是百分之八九十的文章都是在说,使用StreamController...+StreamBuilder搭建bloc,提升性能的会加上InheritedWidget,这些文章看了很多,真正写使用bloc作者开发的flutter_bloc却少之又少。...没办法,只能去bloc的github上去找使用方式,最后去bloc官网翻文档。 蛋痛,各位叼毛,就不能好好说说flutter_bloc的使用吗?非要各种抄bloc模式提出作者的那俩篇文章。...Bloc范例 效果 好了,哔哔了一堆,看下咱们要用flutter_bloc实现的效果。 [bloc演示] 直接开Chrome演示,大家在虚拟机上跑也一样。...Bloc 8.0+新写法 破坏式改变 bloc8.0+的版本,对比之前的写法简直是破坏式的改变,你如果升级到bloc 8.0及其以上的版本,之前写的bloc模式写法已经完全不兼容了,mapEventToState

4.8K41

【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 与业务逻辑拆分的更清晰

82541

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

因此,在WABS中,我使用了一种名为 Async BLoC 的BLoC变体。 它和BLoC一样,我们有可以订阅的输出流;但是,BLoC输入可以包括 同步接收器、异步方法 甚至 共同的两者。...数据层/BLoC中的行为 1.BLoC应该是纯Dart的——没有UI代码,没有导入Flutter相关类和文件,也没有在BLoC中使用BuildContext。...3.控件和BLoC之间的接口应该和BLoC和Service之间的接口保证一致,也就是说,BloC可以通过同步/异步方法直接与服务类通信,并通过流通知更新。...服务层 Service类应该具有和BLoC相同的输入/输出接口。但是,Service和BLoC之间存在一个本质性的区别,那就是: BLoC可以持有和修改状态。 Service不能持有和修改状态。...——虽然看起来Async-BLoC似乎对BLoC来说只是一个很小的改进,但它们完全不同。

16K20

【Flutter 专题】86 初识状态管理 Bloc (一)

Bloc 相关的内容; Bloc Bloc 可以方便的把样式与业务逻辑区分开,从而使开发更便捷,可重用性更好,测试也更加方便; ?...在使用 Bloc 之前需要提前了解一下如下几个概念; Event Event 事件作为 Bloc 的输入,一般是为了响应用户交互(例如按钮按下)或生命周期事件(例如页面加载)而添加它们。...作为将 Stream 输入的 Event 事件转换为输出的 States 状态;每个自定义的 Bloc 必须继承自基础的 Bloc;通过复写 initialState 和 mapEventToState...===$bloc====$event'); super.onEvent(bloc, event); } @override void onTransition(Bloc bloc,...(bloc, transition); } @override void onError(Bloc bloc, Object error, StackTrace stackTrace) {

77851

【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 时报如下错误; ?

92631

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.../flutter_bloc.dart'; import 'dart:async'; import 'bloc_time.dart'; ///Bloc 初探 class TestBlocTimePage...定义的 Bloc 角色,代码如下: import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:intl/intl.dart'; /

3K11

【Flutter 状态管理】第一论: 对状态管理的看法与理解

flutter_bloc 是实现状态管理的工具之一,它的核心是:通过 Bloc 将 Event 操作转化成 State;同时通过 BlocBuilder 监听状态的变化,进行局部组件构建。...通过这种方式,编程者可以将 状态变化逻辑 集中在 Bloc 中处理。当事件触发时,通过发送 Event 指令,让 Bloc 驱动 State 进行变化。...这样在任何界面中都可以获取该 Bloc 及对其状态进行共享。 这是个比较小的案例,可能无法体现 Bloc 的精髓,但作为一个入门级的体验还是挺不错的。你需要自己体会一下: [1]....案例介绍:源码位置 为了让大家对 flutter_bloc 在逻辑分层上有更深的认识,这里选取了 flutter_bloc 官方的一个案例进行解读。...有人可能会问,业务逻辑都放在 Bloc 里处理不就行了吗,为什么非要搞个 repository 层。其实很任意理解,Bloc 核心是处理状态的变化,如果接口请求代码都放在 Bloc 里就显得非常臃肿。

1.2K20

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

优秀的全局数据管理方式 flutter_bloc,完美的业务逻辑和界面UI代码分层隔离。flutter_bloc_test,bloc也可以mock测试,完全脱离界面耦合。...这和我们平常调用API 接口的方式有点不一样,平常是一次调用一次返回,而流式调用是一次调用多次返回,因此我们可以使用dart 的 stream API 来处理5、但是更好的方式是,使用flutter_bloc...,这样,我们可以将界面UI 和 逻辑部分做到很好的隔离,方便维护全局数据管理Flutter应用中可以使用Flutter_bloc这个全局数据管理库来更好地管理全局数据。...实现,有个好处,这个库有个hydrated_bloc 插件,可以支持我非常方便的缓存本地设置。...在Flutter应用中,我们可以使用HTTP请求向ChatGPT发送请求,所有的逻辑全部都在flutter_bloc 封装的 逻辑中完成,当然这里用到了 flutter pub 上别人提供的 dart

4.9K71

主题色切换+国际化 三连

本文会说一下provoder、BLoC和redux的三种实现主题色切换+国际化的实现方式,所以称三连击。 ?...---- 三、BLoC实现主题切换和国际化:flutter_bloc: ^0.22.1 如果是redux是中央集权,地方分权,那么BloC就是完全的自由民主。...一个BloC也有三大件:Bloc 业务逻辑单元、State状态、Events事件 ? ---- 1.主题色的BloC 状态类 可以根据自己的爱好写出自己的风格。下面是我比较喜欢的风格。...ThemeStateImpl(int colorIndex, ThemeData themeData) : super(colorIndex, themeData); } ---- 事件类 定义Bloc...如果Stream流理解地较好,BloC用起来可以感觉是非常优雅的。个人还是比较喜欢redux。Provider作为官宣,也挺好用的。如果hold得住,混用也是可以的。

3.3K20
领券