首页
学习
活动
专区
圈层
工具
发布

初学者的 Flutter bloc

这个库另一个很重要的方面是,它可以帮助我们很容易测试 Bloc 的逻辑。 更多的内容,我们可以直接到官网上查看:bloclibrary.dev/#/gettingst…。...假设我们想创建一个关于游戏的 Bloc 逻辑,我们需要下面三个类: games_bloc.dart games_state.dart games_event.dart 正如你所看到的,我们将需要一个 bloc...在每个类中,我们将管理所需的信息,别担心,我们将会讲解它们,但是现在,我们先解析关于 bloc 挂件的基本概念。...HomeLayout 正如上面所提及,这个类有三个主要的挂件,包含视图的骨架。...> get props => [idSelected]; } Category state 这个类包含 bloc 能够发射的不同状态。我们尽量用简短和清晰的方式来处理视图中的所有可能。

37310

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

和尚以前尝试过 provider 状态管理工具,简单便捷;但在新的项目中,相关同学采用的是 Bloc 状态管理工具,且前段时间何时简单了解了 Stream 相关知识,因此趁机学习一下基本的...Bloc 相关的内容; Bloc Bloc 可以方便的把样式与业务逻辑区分开,从而使开发更便捷,可重用性更好,测试也更加方便; ?...可以使用枚举类型定义事件类,对于相对复杂的事件可以联合业务定义为 class; enum TestEvent { onEvent1, onEvent2 ... onEventN} States States...状态作为 Bloc 的输出,一般用于 UI 状态的更新,页面更新绘制等;一般需要定义不同的数据类型来表示数据状态的变更; class TestState { final int state1;...作为将 Stream 输入的 Event 事件转换为输出的 States 状态;每个自定义的 Bloc 必须继承自基础的 Bloc;通过复写 initialState 和 mapEventToState

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

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

    没办法,只能去bloc的github上去找使用方式,最后去bloc官网翻文档。 蛋痛,各位叼毛,就不能好好说说flutter_bloc的使用吗?非要各种抄bloc模式提出作者的那俩篇文章。...,state的使用抽象状态继承实现的方式,未免有点麻烦,这里我进行一点小改动,state的实现类别有很多,官网写demo也有不用抽象类,直接class,类似实体类的方式开搞的。...需要优化 可以看见这边我们只改动selectedIndex或者isExtended;另一个变量不需要变动,需要保持上一次的数据,进行了此类:state.selectedIndex或者state.isExtended...,就能起到进入页面,初始化一次的效果;add()方法也是Bloc类中提供的,遍历事件的时候,就特地检查了add()这个方法是否添加了事件;说明,这是框架特地提供了一个初始化的方法 这个初始化方式是在官方示例找到的...{ // return widget here based on BlocA's state } ) 仅当您希望提供一个范围仅限于单个窗口小部件且无法通过父级BlocProvider和当前类访问的

    5.8K41

    关于python类的组合

    关于python类的组合,绞尽脑汁之后,写了一个生活中的简单例子,有需要的童鞋可以理解下,水平有限,不对的地方望指正 #coding:utf-8 class Engine(): #某发动机厂家描述发动机对象...,从别的厂家进行采购 self.wheelObj = Wheel(brand, model, quantity) #车轮是汽车的组件,从别的厂家进行采购 def goAhead(self): #...,于是返厂保养一下 car1.wheelObj.maintenance() #测试的时候,发动机又坏了,于是联系厂商,进行发动机维修 car1.ngineObj.repairEngine() #最后...,你会发现,对车轮的保养和发动机的维修,你不用关心内部细节是如何保养,是如何维修的,只需调用就好 #发动机和车轮是作为汽车的组件而存在,将汽车模型(类)和车轮还有发动机组合成了一个新的对象,那就是能前进和后退的汽车...#当然,前进和后退的功能,发动机和车轮厂商也不用关心是如何实现的,哪怕奥迪厂家把这些组件组装成会飞的东西,他们也不关心

    73320

    关于类的其他介绍

    c++列表初始化 可以将列表初始化用在类的初始化当中 Stock s1 = {"name",100,45.0}; Stock s2{"name1"} Stock s3{} 前俩个声明,与我们定义的构造函数匹配...就像应尽可能将const引用和指针用作函数形参一样,只要类方法不修改成员,我们都应将其声明为const。 构造函数和析构函数小结 构造函数是一种特殊的类成员函数,在创建对象时调用。...构造函数的名称和类名相同,但是通过函数重载,可以创建多个同名的构造函数,条件是参数列表不同(函数重载我会在后面笔记再强调的),通常,构造函数用于初始化对象的成员,初始化应与构造函数的参数列表相匹配。...就像对象被创建时调用构造函数一样,当对象被删除时候,程序将调用析构函数,每个类只有一个析构函数。...析构函数没有返回类型,也没有参数,其名称为类名称前加上~。 例如:~bozo,如果构造函数使用了new,则必须使用delete的析构函数

    21420

    主题色切换+国际化 三连

    搞太复杂的例子,一篇文章又不现实。就拿主题色切换+国际化开刀吧。本文会说一下provoder、BLoC和redux的三种实现主题色切换+国际化的实现方式,所以称三连击。 ?...---- 1.1- 状态类 既然是状态管理,首先来看状态。颜色毋庸置疑,还有一个是颜色的选中索引,用来体现颜色按钮的选中情况。...---- 三、BLoC实现主题切换和国际化:flutter_bloc: ^0.22.1 如果是redux是中央集权,地方分权,那么BloC就是完全的自由民主。...一个BloC也有三大件:Bloc 业务逻辑单元、State状态、Events事件 ? ---- 1.主题色的BloC 状态类 可以根据自己的爱好写出自己的风格。下面是我比较喜欢的风格。...这是Bloc的核心,主要通过事件去生成状态。

    3.5K20

    Flutter 状态管理 | 业务逻辑与构建逻辑分离

    基于 flutter_bloc 的状态管理 状态类的核心逻辑应该在于界面的 构建逻辑,而业务数据的维护,我们可以提取出来。...这里通过 flutter_bloc 来将秒表中数据的维护逻辑进行分离,由 bloc 承担。...组件状态类对状态的访问 这样 StopWatchBloc 封装了状态的变化逻辑,那如何在构建时让 组件状态类 访问到 StopWatchState 呢?...到这里,关于通过状态管理如何分离 业务逻辑 和构建逻辑 就介绍的差不多了,大家可以细细品味。其实所有的状态管理库都大同小异,它们的目的不是在于 优化性能 ,而是在于 优化结构层次 。...这里用的是 flutter_bloc ,你完全也可以使用其他的状态管理来实现类似的分离。工具千变万化,但思想万变不离其宗。谢谢观看 ~

    1.7K40

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

    State 具有重新构建组件的能力 所有的 StatefulWidget 都是这样,变化逻辑及状态量都会被封装在对应的 XXXState 类中。...原因是:FloatingActionButton 组件需要修改状态量 _counter 并执行重新构建,所以不得不扩大构建的范围,来包含住 FloatingActionButton 。...案例介绍:源码位置 为了让大家对 flutter_bloc 在逻辑分层上有更深的认识,这里选取了 flutter_bloc 官方的一个案例进行解读。...└── main.dart # 程序入口 2.仓储层 repository 我们先来看一下仓储层 repository ,这是将数据获取逻辑单独抽离出来,其中包含model 包下相关数据实体类...更重要的有点是: repository 层是相对独立的,你完全可以单独对进行测试,保证数据获取逻辑的正确性。 这样能带来另一个好处,当数据模型确定后。

    1.8K20

    Flutter响应式编程:Streams和BLoC

    从值,事件,对象,集合,映射,错误或甚至另一个流,任何类型的数据都可以由Stream传递 。 ### 我怎么知道Stream传达的东西?...关于Resources的重要说明 始终释放不再需要的Resources是一种非常好的做法。...此外,由于Dart中没有类析构函数,因此你永远无法正确释放资源。 作为局部变量 你可以实例化BLoC的局部实例。 在某些情况下,此解决方案完全符合某些需求。...关于这种通用BlocProvider的一些解释 首先,如何将其作为provider使用?...关于BLoC的个人建议 与BLoC相关的第三条规则是:“依赖于Streams对输入(Sink)和输出(stream)的独占使用”。 我的个人经历稍微关系到这个说法......让我解释一下。

    4.7K90

    Flutter 入门指北(Part 13)之网络

    以上代码查看 http_main.dart 文件 实践一下下 不知道小伙还记得前面讲的 BLoC 没有,忘了可以查看 Flutter 状态管理及 BLoC,这里结合 BLoC 和 Dio 实现界面和逻辑分离的小例子...实现 BLoC 需要有一个管理类 class UserBloc extends BaseBloc { RandomUserModel _user; RandomUserModel get user...json 转成的 model 类 RandomUserModel model = RandomUserModel.fromMap(response.data); _user = model; //..., // 注入初始值 stream: _bloc.stream), // 注入更新 stream ); } } 以上代码查看 bloc_network 包下的所有文件 当然了,福利是不可少的,但是需要你到项目中自己去找...,实现 BLoC 模式,实现状态管理:flutter_weather(https://github.com/kukyxs/flutter_weather) 一个课程(当时买了想看下代码规范的,代码更新会比较慢

    1.5K20

    Flutter ——状态管理 | StreamBuild

    Stream可以接受任何类型的数据,值、事件、对象、集合、映射、错误、甚至是另一个Stream,通过StreamController中的sink作为入口,往Stream中插入数据,然后通过你的自定义监听...this.studentId = this.widget.studentId; //步骤三实现 StreamController,FocuseItemModel是我的实体类...2.方法二使用状态管理bloc,如果使用了bloc,streamBuild中的stream 就因该传bloc的数据,如果我其它地方使用也使用了这个item,那么这个stream就应该传...,单独一个bloc去管理,我觉得为了一个按钮的改变,去做很多操作,有点不值得了。...bloc+streamBuild,此时的stream是bloc里的,不需要在dispose()方法中去关流,这样就可以放弃使用StatefulWidget了。

    3.3K31

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

    闲言少叙,接下来我很荣幸地介绍: Widget-Async-BLoC-Service 模式 简称:WABS (这很酷,会因为它包含我的缩写 :D)。 这种架构模式有四种变体: 1....UI层 这是我们添置控件的地方。 控件可以是无状态或有状态的,但它们都不应包含任何 显式 状态管理的逻辑。...更多关于BLoC的信息 一个Async BLoC可以定义一个StreamController/Stream对,如果使用RxDart,则等效对应定义一个BehaviorSubject/Observable...关于术语的说明:对于与三方服务的通信的类,其他文章通常使用Repository来表述;甚至对于Repository的定义也随着时间的推移而发展(有关更多信息,请参阅此文章)。...当更新app本地的状态(例如,将状态从一个控件传递到另一个控件中)时,BLoC有更简单的替代方案,这个后文再提。

    17.9K20
    领券