2016.01.06 21:02* 字数 82 阅读 24416评论 11喜欢 12 Title: 使用 pyenv 可以在一个系统中安装多个python版本 Date: 2016-01-06 Author...: ColinLiu Category: Python tags: python,pyenv 使用 pyenv 可以在一个系统中安装多个python版本 Installl related yum install...,括号中内容表示这个版本是由哪条途径激活的(global、local、shell) $ pyenv version 3.5.1 (set by /root/.pyenv/version) # 使用 python-build...(一个插件) 安装一个 Python 版本,到 $PYENV_ROOT/versions 路径下。...$ pyenv global 3.4.0 # 设置面向程序的本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。
Flutter状态管理系列主要指的是全局状态的管理,主要介绍的几种实现方式有: InheritedWidget StreamBuilder Provider 前两种,框架自带;第三种是google推荐使用的三方库...InheritedWidget实现全局状态的管理 在Flutter数据传输中,介绍了数据从上向下的传输方式,其中介绍了InheritedWidget的使用,当时的例子是在一个page里面,数据从上向下传输...InheritedWidget的问题 这里我们只有一个状态,试想,如果有多个全局状态,那么应该怎么实现?...一个InheritedWidget,多个表示状态的类;需要考虑InheritedWidget的updateShouldNotify方法需要如何实现,每个状态稍有不同就去通知,那么全局那么多Widget都会收到消息...原理 关于InheritedWidget的实现原理,可以参考从 Flutter 源码看 InheritedWidget 内部实现原理 总结 可以发现InheritedWidget的使用,可以看做是在全局创建
了解这个两个概念后,我们先看下图,在 Flutter 中构建一个 Widget ,首先会创建出这个 Widget 的 Element ,而事实上 State 实现跨帧共享,就是将 State 保存在Element...4、状态共享 前面我们聊了 Flutter 中 State 的作用和工作原理,接下来我们看一个老生常谈的对象: InheritedWidget 。...状态共享是常见的需求,比如用户信息和登陆状态等等,而 Flutter 中 InheritedWidget 就是为此而设计的,在第十二篇我们大致讲过它: 在 Element 的内部有一个 Map<Type...0、演示代码 如下代码所示, 实现的是一个点击计数器,其中: _ProviderPageState 中使用MultiProvider 提供了多个 providers 的支持。...,相信用过 BLoC 模式的同学会感觉很贴心,以前正常用做 BLoC 时,每个 StreamBuilder 的 snapShot 只支持一种类型,多个时要不就是多个状态合并到一个实体,要不就需要多个StreamBuilder
我们在根Widget继承了InheritedWidget,然后在该组件中存放一个数据data,那么可以在任意子Widget中来获取该组件的数据并使用。...当在任一组件中改变了共享数据data,InheritedWidget组件会自上而下通知所有使用过共享数据的组件并刷新组件,同时会回调didChangeDependencies() 方法。...,多个NotifierProvider时使用MutiProvider包装,如下: ///多个NotifierProvider的时候 return MultiProvider(providers: [...三、Flutter 性能调优 一个新技术改造完成,我们最关注的当然是性能体验有没有达到预期。那Flutter页面性能评判标准是什么,如何去度量,有没有可视化工具,帮我们去做一些性能调优。...2)控制刷新范围与次数 尽量避免在滑动监听中触发setStat()刷新视图。 ? 如上图所示,需要滑动的过程中,显示、隐藏标题栏,并且是一个渐变的过程,遇到这种情况,一定要尽量的控制刷新的范围和频次。
本文示例代码 数据共享 InheritedWidget InheritedWidget 是 Flutter 中非常重要的一个功能型组件,它提供了一种数据在 widget 树中从上到下传递的方式。...例如在根 Widget 中通过 InheritedWidget 共享了一个数据,那么我们就可以在任意的子 Widget 中获取改共享的数据; 这个特性在一些需要 widget 树中共享数据的场景非常方便...Flutter Framework 调用,这个依赖指的就是 widget 是否使用了父 widget 中的 InheritedWidget 的数据; 如使用了,则代表该组件依赖 InheritedWidget...,在 build 方法中使用了 ShareDataWidget 的数据,同时在回调中打印了日志 最后,创建一个按钮,点击一次,就让 ShareDataWidget 的值自增 class TestInheritedWidget...,都会被重新执行 build,这是没必要的,那有什么办法可以避免呢,答案是使用缓存; 一个简单的做法就是通过封装一个 StatefulWidget ,将 Widget 树缓存起来,这样就可以放在 build
之前我写过一篇文章使用Provider来进行状态管理,介绍了在Flutter中如何通过Provider来进行状态管理,今天我们来介绍状态管理的另外一种方式——InheritedWidget。...InheritedWidget是Flutter中非常重要的一个功能性组件,它提供了一种数据在widget树中自上而下传递、共享的方式。...比如,我们在应用的根Widget中通过InheritedWidget共享了一个数据,那么我们就可以在任意的子Widget中获取到共享的这个数据。...接下来我们通过一个计数器的例子来看一下InheritedWidget 的使用。...我在使用Provider来进行状态管理中介绍的Provider就是对InheritedWidget的封装,而刚才说到的缓存操作,在Provider中是有实现的。
在平时的开发中我们都会遇到很多数据传递的例子,在前面的文章中我们接触队夺得就是构造方法属性的传递,但是flutter中并不是只有这一种传递的方法,今天我们就来看看Flutter中常用的数据传递方式 1....InheritedWidget InheritedWidget 是 Flutter 中的一个功能型 Widget,在构建Widget的同时可以在Widget层中向下传递,适用于在 Widget 树中共享数据的场景...接下来,我们就使用一个简单的例子来看下如何使用InheritedWidget,还是以计数器为例。...3.Notification Notification中文意思是通知,与Android中的广播机制类似,在Flutter中Notification的功能是子节点状态变更,发送通知上报。...Wdiget树,没有办法脱离Wdiget使用。
「 flutter 必知必会 」贴心解析:状态管理与数据共享 InheritedWidget 完整使用方案,为你铺平大前端学习之路 一、前言 由于Flutter采用节点树的方式组织页面,以致于一个普通页面的节点层级会很深...《Flutter 实战》中讲到:InheritedWidget 是 Flutter 中非常重要的一个功能型组件,它提供了一种数据在 widget 树中从上到下传递、共享的方式 比如我们在应用的根 widget...中通过 InheritedWidget共享了一个数据,那么我们便可以在任意子 widget 中来获取该共享的数据!...那么废话不多说,我们直接开始介绍 InheritedWidget 的使用 二、未引入时 下面我们以系统自带的模版为例,逐步引入 InheritedWidget 当 new flutter project...} 3.2 封装 InheritedWidget 在新建一个类,并让其继承与 InheritedWidget 他的作用是将页面与数据类绑定 class _InheritedWidget extends
在一个.net sln中包含多个project,其中四个project应用了同一个.net assamply:Lucene.Net。...原来被引用的项目有一个Copy Local属性,默认为true,就是把应用的assamply拷贝到输出目录下。...原来四个project都企图把同一个assamply拷贝过来,而拷贝成功后还锁定了这个文件。这样第一个项目操作成功并锁定文件后,第二个项目拷贝就失败了,因为无法覆盖被锁定的文件。...如果有多个project引用同一assamply,除了其中一个的Copy Local属性为true,其他改成false就行了。...GAC中的assambly不存在此问题,因为默认Copy Local属性为false。
不像 Redux 在 React 中独占鳌头,Flutter 的数据流管理方案层出不穷,本文旨在介绍在2021年值得使用的 Flutter 数据流管理方案,除了大家都比较熟悉的 InheritedWidget...2.1 使用方法 具体的使用方法比较简单,就不过多介绍,简单的说一下使用步骤: 先通过继承 InheritedWidget 实现一个保存状态与状态更改方法的 widget 将这个 widget 放在需要使用该状态的最小子树的顶层...在需要用到状态的子树中使用 of 方法获取状态 下面来看看 InheritedWidget 是如何工作的。...一般情况下,在整个 widget 树的最外层包上一个 ProviderScope,state 存放于此处,当然如果想覆盖上一层的state 的话,可以使用多个 ProviderScope void...方法1:flutter_riverpod 提供了一个 ConsumerWidget,它会在 build 函数中多提供了一个 ScopedReader 函数来从 provider 中获取值并使 state
Notification 也是 Flutter 中非常重要的,后面会有专门的文章详细介绍,此篇不做介绍。 那么什么样的场景适合使用 InheritedWidget 呢?...InheritedWidget 基本用法 上面分析了 InheritedWidget 组件的使用场景,下面用一个最简单的 demo 展示如何使用 InheritedWidget 组件。...时只会执行 build 函数,而访问服务器接口是一个耗时工作,考虑性能因素,不能将访问服务器接口放在 build 函数中,那么 InheritedWidget 数据的更新就无法更新其依赖的组件,而 updateShouldNotify...下面重点来了,那么如何正确使用 InheritedWidget 组件,答案是 InheritedWidget + ValueNotifier,关于 ****的用法可以到我的个人博客中查看,地址:http...上面的代码都是在 InheritedElement 中的,在看下 InheritedWidget 的源代码: abstract class InheritedWidget extends ProxyWidget
因此,设计一个清晰、易用的导航栏对于提升用户体验和应用的可用性至关重要。 在Flutter应用开发中,实现全局导航栏效果意味着无论用户在应用的哪个页面,导航栏的内容和状态都保持一致。...本篇博客将探讨在Flutter应用中实现全局导航栏效果的方法,包括使用状态管理器、InheritedWidget、混入等技术。...如何使用InheritedWidget实现全局导航栏效果 要使用InheritedWidget实现全局导航栏效果,可以将导航栏的状态提升到InheritedWidget中,并在需要使用导航栏的页面中访问和更新导航栏的状态...它允许类在不继承自其他类的情况下,复用和扩展已有的功能。在Dart和Flutter中,混入是通过使用关键字with来实现的,可以将一个或多个混入类与主类进行组合,从而增强主类的功能。...案例研究:全局导航栏应用 背景: 假设我们正在开发一个移动应用,该应用包含多个页面,并希望在整个应用中使用全局导航栏来管理页面之间的导航。
是的,Flutter 使用的是 Dart 支持 Mixin ,而 Mixin 能够更好的解决多继承中容易出现的问题,如:方法优先顺序混乱、参数冲突、类结构变得复杂化等等。...二、InheritedWidget InheritedWidget 是一个抽象类,在 Flutter 中扮演者十分重要的角色,或者你并未直接使用过它,但是你肯定使用过和它相关的封装。 ?...同时我们日常使用中传递的 BuildContext 也都是一个 Element 。...是否将需要共享的 State,都放在一个 InheritedWidget 中,然后在使用的 widget 中直接取用就可以呢?答案是肯定的!...在 PaintingBinding 内有一个 ImageCache 对象,该对象全局一个单例的,同时再图片加载时的 ImageProvider 所使用,所以设置图片缓存大小如下: //缓存个数 100
在Flutter中,跨Widget的数据共享,可以如下图这样表示。 ?...必须要结合StatefulWidget才能具有修改数据的能力,因此,思路就是在InheritedWidget中持有一个StatefulWidget的State实例,同时,使用一个StatefulWidget...InheritedWidget(Root)是在StatefulWidget(RootContainer)中初始化的,当使用StatefulWidget(RootContainer)的setState函数时...rebuild了,这也是为什么在Flutter中,很多不需要改变的Padding、Margin、Theme、Size等参数需要尽可能设置为const的原因,这样可以在rebuild的时候,提高效率。...在Flutter中,Theme的实现,就是采用的这种方式。
当然,在开发过程中,flutter提供了虚拟机,实现了hot reload的功能,在代码进行修改之后,可以立刻重载,而不需要重新编译整个代码。 FLutter这么神奇,那么它到底是怎么工作的呢?...即便是一个很小很小功能,在Flutter中都可以找到与之对应的Widgets。...这里应该可以理解Flutter中Widget的设计思想了。在Flutter中一切皆可为Widget。...这样做的好处就是一切都是由Flutter自己控制的,使用者可以在Flutter的基础上进行无限扩展,而不用受限于系统底层的实现限制。...另一方面,这样可以减少Flutter在呈现过程中在Flutter代码和平台代码之间来回转换,减少了性能瓶颈,提升效率。
我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。 下面是3个示例工作表: ?...图4:主工作表Master 解决方案1:使用辅助列 可以适当修改上篇文章中给出的公式,使其可以处理这里的情形。首先在每个工作表数据区域的左侧插入一个辅助列,该列中的数据为连接要查找的两个列中数据。...16:使用VLOOKUP函数在多个工作表中查找相匹配的值(1)》。...解决方案2:不使用辅助列 首先定义两个名称。注意,在定义名称时,将活动单元格放置在工作表Master的第11行。...C1,Arry2,,,))=$B11 相似,因此只解释其中一个的工作原理。
在某个工作表单元格区域中查找值时,我们通常都会使用VLOOKUP函数。但是,如果在多个工作表中查找值并返回第一个相匹配的值时,可以使用VLOOKUP函数吗?本文将讲解这个技术。...最简单的解决方案是在每个相关的工作表中使用辅助列,即首先将相关的单元格值连接并放置在辅助列中。然而,有时候我们可能不能在工作表中使用辅助列,特别是要求在被查找的表左侧插入列时。...图3:工作表Sheet3 示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”对应的Amount列中的值,如下图4所示。 ?...B1:D10"),3,0) 其中,Sheets是定义的名称: 名称:Sheets 引用位置:={"Sheet1","Sheet2","Sheet3"} 在公式中使用的VLOOKUP函数与平常并没有什么不同...因为我们想得到第一个匹配的结果,所以将该数组传递给MATCH函数: MATCH(TRUE,COUNTIF(INDIRECT("'"&Sheets&"'!
StatelessWidget / StatefulWidget StatelessWidget 是状态不可变的 Widget,主要通过 build() 方法,把一个或多个 Widget 整合成一个新的...Widget;这也完全符合 Flutter 【组合大于继承】的思想;StatelessWidget 的核心方法就是 build() 方法,把多个 Widget 组合包装成一个新的 Widget; abstract...ProxyWidget ProxyWidget 作为一个抽象的代理 Widget 并没有实质性的作用,只是在父类和子类需要传递信息时使用;主要有 InheritedWidget 和 ParentDataWidget...Bloc 或 Provider 等状态管理的朋友都了解过 InheritedWidget,主要都是对 InheritedWidget 的优化和封装;可以在树结构中传递信息,当使用 InheritedWidget...在构建相同类型 Widget 的多个实例时很有用,例如 List 列表中多个相同类型的 item,可以提高列表效率; GlobalKey 可以作为应用全局唯一标识,在整个 Widget 层级中都是唯一的
- runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等 同样,对于在 Dart 中的同步异常和异步异常,同步异常可以通过 try/catch 捕获...《Flutter 实战》中讲到:InheritedWidget 是 Flutter 中非常重要的一个功能型组件,它提供了一种数据在 widget 树中从上到下传递、共享的方式 比如我们在应用的根 widget...InheritedWidget 基本使用: 还没有学会 使用的同学可以先查看这篇文章进行学习 「flutter 必知必会」详细解析数据共享 InheritedWidget 完整使用 2.3.1...必知必会 」最强数据管理方案 flutter_redux 使用解析 OK,那么一个企业级项目的 main.dart 木块中该如何使用 flutter_redux 呢?...,HomePage 监听到后都能统一的显示 Toast 很明显这是一个多对一的情形(多个发送方对一个接收方 HomePage),而且发送事件的逻辑是分散在不同功能模块中的,所以我们不要采用 event_bus