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

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

之前的状态和当前的状态,返回值为 Boolean 类型,true 为更新状态重建 Widget,false 时不重新构建; @override Widget build(BuildContext context...Widget;lazy 为是否懒创建(延迟创建),和尚理解的为是否在使用时再进行创建,默认为 true; class _BlocPageState extends State {...BuildContext; condition 为可选的过度细粒度,包括两个参数,之前的状态和当前的状态,返回值为 Boolean 类型,true 为进行 listener 的监听,false 时过滤掉...listener 的监听;此时的过滤与 BlocBuilder 中的 condition 过滤无关; listener 在每次状态变更时调用,其中包括上下文环境和当前状态两个参数; @override...A1: 在 FloatingActionButton 中添加 heroTag 区分 以前在学习 Hero Animation 时,在同一个 Page 页面不能用两个相同的 heroTag,和尚这次忽略了

98731

深入理解作用域和闭包

前言 JavaScript中的变量是松散类型的,没有规则定义它必须包含什么数据类型,它的值和数据类型在执行期间是可以改变的。...无论是在全局上下文还是函数上下文中,我们在声明前调用一个变量它的值为undefined,没有报错就证明了var声明变量会造成变量提升。...变量的生存周期 接下来,我们来看下变量的生命周期。 变量如果处在全局上下文中,如果我们不主动销毁,那么它的生存周期则是永久的。 变量如果处在函数上下文中,它会随着函数调用的结束而被销毁。...函数内部定一个了一个变量a 随后,在函数内部又返回了一个匿名函数的引用 在匿名函数内部,它可以访问到selfAdd函数上下文中的变量 我们在调用selfAdd()函数时,它返回匿名函数的引用 因为匿名函数在全局上下文中被继续引用...综合上述,在块内给foo赋值时,它都优先在块作用域内找到了这个变量对象,并没有改变全局上下文中的foo,因此块外的console.log(foo)的值仍然是块内部第一次初始化时变量提升时的值。

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

    FlutterUnit 更新 | 拓展样式风格切换 - 标准风格

    enum AppStyle{ standard, // 标准样式 fancy, // 华丽样式 } 在全局状态 AppState 中定义 AppStyle 类型成员 appStyle,这样通过...如下在 _UnitPhoneNavigationState 中获取 AppStyle ,根据样式类型构建不同的主页组件。 ---- 3. 应用设置界面 另外,新版本中对设置界面也进行展示的优化。...新风格中搜索的实现细节 搜索采用的是界面跳转的处理方式,跳转过程使用透明渐变,这样的过渡在视觉上要柔和一些。 图片 ---- 在搜索界面的实现中,关键字的高亮方面遇到了一些小问题。...因为输入组件名时,不区分大小写: 之前在 Autocomplete 自动填充 一文中,通过关键字进行 split 分割文字处理样式,显然无法完美地完需求。...其中可以传入一个 Pattern 对象作为匹配符,onMatch 回调用于处理每次匹配成功的回调,onNonMatch 是非成功时回调。

    1.1K10

    【随手记】数据类型

    : 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储; 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。...,块级作用域可以在函数中创建也可以在一个代码块中的创建(由{ }包裹的代码片段) let和const声明的变量不会有变量提升,也不可以重复声明 在循环中比较适合绑定块级作用域,这样就可以把声明的计数器变量限制在循环内部...变量对象是一个包含了执行环境中所有变量和函数的对象。作用域链的前端始终都是当前执行上下文的变量对象。全局执行上下文的变量对象(也就是全局对象)始终是作用域链的最后一个对象。...(2)函数执行上下文 当一个函数被调用时,就会为该函数创建一个新的执行上下文,函数的上下文可以有任意多个。...first() ③ 创建执行上下文 创建执行上下文有两个阶段:创建阶段和执行阶段 1)创建阶段 (1)this绑定 在全局执行上下文中,this指向全局对象(window对象) 在函数执行上下文中,this

    41420

    ​nginx的配置系统

    在nginx.conf中,包含若干配置项。每个配置项由配置指令和指令参数2个部分构成。指令参数也就是配置指令对应的配置值。 指令概述 配置指令是一个字符串,可以用单引号或者双引号括起来,也可以不括。...TOKEN串分为简单字符串或者是复合配置块。复合配置块即是由大括号括起来的一堆内容。一个复合配置块中可能包含若干其他的配置指令。...如果一个配置指令的参数全部由简单字符串构成,也就是不包含复合配置块,那么我们就说这个配置指令是一个简单配置项,否则称之为复杂配置项。...mail: 实现email相关的SMTP/IMAP/POP3代理时,共享的一些配置项(因为可能实现多个代理,工作在多个监听地址上)。 指令上下文,可能有包含的情况出现。...例如:通常http上下文和mail上下文一定是出现在main上下文里的。在一个上下文里,可能包含另外一种类型的上下文多次。

    62620

    【动画演示】:JS 作用域链不在话下

    但是,getPersonInfo函数中不包含变量 city,它是怎么取到 city 的值? 首先,JS 引擎为不同的上下文设置内存空间。...对于getPersonInfo函数,作用域链看起来是这样的: 作用域链基本上是对对象的“引用链”,其中包含对在执行上下文中可引用的值(和其他作用域)的引用。...作用域是在创建执行上下文时创建的,这说明它是在运行时创建的。 在本文中,不会讨论激活对象或执行上下文,我们只关注作用域。 在以下示例中,执行上下文中的键/值对表示使作用域链对变量的引用。...在全局上下文中,我们用San Francisco的值声明了变量city,因此有一个对变量city的引用。...这里也没有调用getPersonInfo函数,所以也没有创建本地上下文。然而,我们试图在全局上下文中访问name、age和city的值。

    32110

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

    ,方便对逻辑过于复杂的页面,所有行为的一种维护;但是过于简单的页面,就那么几个事件,还单独维护,就没什么必要了 在cubit层写的公共方法,在view里面能直接调用,更新数据使用:emit() cubit...,使用BlocProvider.of(context)调用全局XxxBloc中事件,这就起到了一种跨页面调用事件的效果 使用全局Bloc做跨页面事件时,应该明白,当你关闭Bloc对应的页面...它用作依赖项注入(DI)小部件,以便可以将一个块的单个实例提供给子树中的多个小部件。 在大多数情况下,BlocProvider应使用它来创建新的bloc,这些bloc将可用于其余子树。...它应用于需要在每次状态更改时发生一次的功能,例如导航,显示a SnackBar,显示aDialog等。 listener`与in和函数不同,每次状态更改(**不**包括初始状态)仅被调用一次。...在listenWhen和buildWhen将在每个被调用cubit state的变化。

    5.6K41

    Flutter 桌面探索 | 自定义可拖拽导航栏

    整体是一个 上下 结构,下方是 导航栏 + 内容 的左右结构: 下面是对静态界面结构的简单仿写,本文主要介绍导航栏的交互实现,其他内容暂时忽略。以后有机会可以慢慢展开来说。...导航栏布局实现 导航栏是自定义的 LeftNavigationBar 组件,是一个上下结构:Logo 在最底端,LeftNavigationMenu 菜单在上方。...在构建时,根据 active 状态创建不同样式的条目即可。 ---- 4. 菜单的点击激活状态管理 界面上呈现的内容,都有其对应的数据载体,菜单的点击激活也不例外。...const NavMenus({required this.menus}); } ---- 另外说一点,导航模块使用了两个 Bloc ,可以单独抽离一个组件进行包裹 BlocProvider,这样其子树的上下文中才可以访问到相关的...Draggable 和 DragTarget 需要一个泛型,也就是拖拽交互中需要传递的数据,这里是 int 类型的菜单 id 。

    2.4K20

    JS词法环境和执行上下文

    代码都是在执行上下文中运行的。你可以将代码运行与执行上下文的关系类比为进程与内存的关系,在代码运行过程中的变量环境信息都放在执行上下文中,当代码运行结束,执行上下文也会销毁。...在执行上下文中记录了代码执行过程中的状态信息,根据不同运行场景,执行上下文会细分为如下几种类型:全局执行上下文:当运行代码是处于全局作用域内,则会生成全局执行上下文,这也是程序最基础的执行上下文。...指向的上下文中的词法环境中找到全局对象console并调用log函数。...块环境记录(块作用域) 在ECMA标准中提到,当遇到Block或CaseBlock时,将会新建一个环境记录,在块中声明的let/const变量、函数、类都存放这个新的环境记录中,这些变量与块强绑定,在块外界则无法读取这些声明的变量...这个特性就是我们熟悉的块作用域。什么是Block?被花括号({})括起来的就是块。在Block中的let/const变量仅在块中有效,块外界无法读取到块内变量。var变量不受此限制。

    1.4K40

    《JavaScript高级程序设计(第四版)》学习笔记(四)第4章

    : 作用域是静态的,只要函数定义好,就一直存在,不再改变,执行上下文是动态的,调用函数时创建,函数调用结束时摧毁 产生的时间不同,函数执行上下文是在函数执行的前一刻确定的 联系: 全局上下文环境 ->...全局作用域 函数上下文环境 -> 对应的函数使用域 函数参数认为是当前上下文中的变量,因此与上下文中的其他变量遵循相同的访问规则 4.2.1 作用域链增强 try / catch 语句的 catch...原因在于,with 语句将 location 添加到了作用域链前端,因此 href 在访问时能够找到该属性 不推荐使用,影响正常判断 4.2.2 变量声明 三个至关重要的关键字,var、let以及...使用 let 的块级作用域声明 let 声明的变量作用域是块级的,变量只在最近的花括号内有效 if(true) { let a; //仅在块内有效 } 与 var 的另一个不同在于,同一个作用域内不能重复声明两次...1 当包含这个引用类型值的变量又被赋值成另一个值了,那么这个引用类型值的引用次数减1 当引用次数变成0时,说明没办法访问这个值了 当垃圾收集器下一次运行时,它就会释放引用次数是0的值所占的内存

    54120

    Caché 变量大全 $ETRAP 变量

    不鼓励使用它。 可以使用SET命令为$ETRAP提供包含一个或多个对象脚本命令的字符串值。然后,当出现错误时,Caché会执行在$ETRAP中输入的命令。...$ETRAP在某些上下文中支持标签+偏移量(但在程序中不支持)。这个可选的+offset是一个整数,指定从标签偏移的行数。 InterSystems建议在指定错误处理程序位置时避免使用行偏移量。...在需要自变量QUIT命令的用户定义函数上下文中调用$ETRAP错误处理命令时,隐式QUIT命令以空字符串参数退出。...在不同的上下文级别中设置$ETRAP值 默认情况下,Caché将$ETRAP特殊变量的值转发到新的DO,XECUTE和用户定义的函数上下文中。...示例 下面的示例演示如何将$ETRAP的值传递到新的上下文中,以及如何在发生错误后在每个上下文中再次调用$ETRAP错误处理命令。在此示例中,$ETRAP命令不尝试消除该错误。

    53240

    JS词法环境和执行上下文_2023-02-24

    代码都是在执行上下文中运行的。 你可以将代码运行与执行上下文的关系类比为进程与内存的关系,在代码运行过程中的变量环境信息都放在执行上下文中,当代码运行结束,执行上下文也会销毁。...在执行上下文中记录了代码执行过程中的状态信息,根据不同运行场景,执行上下文会细分为如下几种类型: 全局执行上下文:当运行代码是处于全局作用域内,则会生成全局执行上下文,这也是程序最基础的执行上下文。...running指向的上下文中的词法环境中找到全局对象console并调用log函数。...块环境记录(块作用域) 在ECMA标准中提到,当遇到Block或CaseBlock时,将会新建一个环境记录,在块中声明的let/const变量、函数、类都存放这个新的环境记录中,这些变量与块强绑定,...在块外界则无法读取这些声明的变量。

    45030

    深入理解 JavaScript 中的作用域和上下文

    在块语句中定义的变量将保留在它们已经存在的作用域中。...在全局作用域(scope)中上下文中始终是Window对象。(愚人码头注:取决于JavaScript 的宿主换环境,在浏览器中在全局作用域(scope)中上下文中始终是Window对象。...之后,每个函数调用(启用)将其上下文附加到执行期上下文中。当另一个函数在该函数或其他地方被调用时,会发生同样的事情。 每个函数都会创建自己的执行期上下文。...在创建阶段主要做的三件事情是: 创建变量(激活)对象 创建作用域链 设置上下文(context)的值( `this` ) 变量对象 变量对象,也称为激活对象,包含在执行期上下文中定义的所有变量,函数和其他声明...这是一个在 window 上下文中调用的自动调用的匿名函数,这意味着 this的值为window。暴露一个单一的全局接口来进行交互。

    1.3K10

    再谈协程之CoroutineContext我能玩一年

    它会合并它们所包含的元素,用操作符右边的上下文中的元素覆盖左边的上下文中的元素,很像Map上的行为。 ❝[加号运算符]返回一个包含来自这个上下文的元素和其他上下文的元素的上下文。...例如,coroutineContext[Job]将返回coroutineContext所持有的Job的实例,如果不包含任何实例,则返回null。.... */ } 继承的上下文中的任何元素实际上都会被覆盖,这样的好处是,无论在哪个CoroutineScope上调用该语句都有相同的行为。...在作用域的上下文中定义元素,是在使用上下文的地方,覆盖库的默认值的一种方式。该作用域还提供了一个job,因此从该作用域启动的所有coroutine都有同一个父级。.... */ } 在此块中执行的代码将从其调用的上下文中继承dispatcher,但它将通过使用NonCancellable作为父代来覆盖该上下文的Job。

    78910

    Shell 主要逻辑源码级分析:SHELL 运行流程 (1)

    在shell启动之后,无论是进入上面的2和3两个分支中的哪一个,最后解析命令所用到的函数都是execute_cmd.c中定义的函数。分支1不涉及到命令的解析,所以不在这里分析。 3....一个上下文中的变量都是在这个上下文中可见的。...一个上下文中的所有变量,存放在var_context的table成员中。 变量:bash中的变量不强调类型,可以认为都是字符串。...栈顶 :foo上下文(包含foo上下文的所有局部变量) 栈底:global全局上下文(包含所有全局变量) 为了解释更详细的情况,假设在foo中又调用了fun函数,则fun先从foo中获取要导出的变量,加上自己新增的变量...栈顶 :foo上下文(包含foo上下文的所有局部变量) 栈底:global全局上下文(包含所有全局变量) 变量的查找顺序:从栈顶往栈底,即如果栈顶上下文中没有要查找的变量,则查找其在栈中的下一个上下文,

    5.2K01

    Javascript中作用域的理解?

    在块语句内部定义的变量将保留在它们已经存在的作用域内。...在Node.js中在全局作用域(scope)中上下文中始终是Global 对象 如果作用域在对象的方法中,则上下文将是该方法所属的对象。...之后,每个函数调用(启用)将其上下文附加到执行期上下文中。当另一个函数在该函数或其他地方被调用时,会发生同样的事情。...在创建阶段主要做的三件事情是: 创建变量(激活)对象 创建作用域链 设置上下文(context)的值( this ) 变量对象 变量对象,也称为激活对象,包含在执行期上下文中定义的所有变量,函数和其他声明...这是一个在 window 上下文中调用的自动调用的匿名函数,这意味着 this的值为window。暴露一个单一的全局接口来进行交互。

    91930

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

    在Flutter项目开发中,一般的项目中,会有网络请求的代码与Widget构建的UI界面写一起,随着业务的不断积累,代码量也越来越大,维护的复杂度也会随着增加。...BLoC模式可以将Widget构建UI的代码与业务处理的代码分离出来,在BLoC模式下的应用程序,一般会有全局的BLoC,每一个页面也会对应有一个独立的BLoC。...//Bolc 的泛型数据类型 ///在这里 int 代表输入的事件类型 /// String 代表输出的数据结果 class TimeCounterBloc extends Bloc的条件,返回 true,那么将调用state执行视图的重新构建,如果返回false,则不会执行视图的重建操作。...可以通过BlocProvider.of (context)向其子级提供bloc,如上述的 add 方法发送事件 BlocProvider.of(context).add

    3.4K11

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

    创建BLoC业务处理类 BLoC类是一个业务逻辑处理类,不包含任何UI逻辑,且一个BLoC类只处理一种独立的业务逻辑,在官方的Demo中,业务逻辑有下面几个部分构成。...IncrementBloc就是这个业务的处理核心,通过Stream,让外界可以监听数据的改变。 一个标准的BLoC类通常包含下面几个部分。...层中,可以通过BlocProvider.of(context)来获取指定类型的BLoC,这样就可以使用它内部定义好的接口和数据。...在UI层中,有两种写法,一种是直接使用StatelessWidget,在build函数中初始化BlocProvider.of(context),另一种是使用StatefulWidget...举个例子,比如在第一个界面在流中添加了一些数据,再打开第二个界面的时候,创建StreamBuilder之后,是无法直接获取流的最新数据的,因为这时候流中的的数据在StreamBuilder监听之前就已经结束了

    1.6K30

    一段因 @State 注入机制所产生的“灵异代码”

    ,在 Text 中不包含 n 的情况下,即使 n 值改变,StateTest 视图的 body 也不会重新计算。...在 ContextView 不包含 Text 的情况下,在 Sheet 显示后,n 的 _wasRead 将转变为 true( Sheet 视图显示后,方创建关联 )。...也就是说 Sheet 中的视图与原有视图分别处于不同的上下文中。在 SwiftUI 早期的版本中,对于分别位于不同上下文的独立的视图树,开发者需要显式为 Sheet 视图树注入环境依赖。...这意味着,相较于在原有视图树上创建分支,在新上下文中重建视图树的开销更大,需要进行的工作也更多。而 SwiftUI 为了优化效率,通常会对若干操作进行合并。...现象分析根据上文中介绍的内容,我们对本文代码的奇怪现象进行一个完整的梳理:当 ContextView 中不包含 Text( ContextView 没有与 n 创建关联 )程序运行,SwiftUI 对

    1.9K20
    领券